{
  "openapi": "3.1.0",
  "info": {
    "title": "Polymorfa Public API",
    "version": "1.0.0",
    "description": "Public Messaging API, Polymorfa Graph API, Platform API, and webhook contracts in one portable OpenAPI document.",
    "contact": {
      "name": "Polymorfa API",
      "url": "https://docs.polymorfa.com"
    }
  },
  "servers": [
    {
      "url": "https://api.polymorfa.com"
    }
  ],
  "paths": {
    "/ping": {
      "get": {
        "operationId": "ping",
        "tags": [
          "Health"
        ],
        "summary": "Liveness probe",
        "security": [],
        "responses": {
          "200": {
            "description": "Pong",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PingResponse"
                }
              }
            }
          }
        }
      }
    },
    "/health": {
      "get": {
        "operationId": "getHealth",
        "tags": [
          "Health"
        ],
        "summary": "Full service health check",
        "security": [],
        "responses": {
          "200": {
            "description": "Required readiness checks pass; optional diagnostics may report degraded or in-progress state",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__HealthResponse"
                }
              }
            }
          },
          "503": {
            "description": "One or more services unhealthy or draining",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__HealthResponse"
                }
              }
            }
          }
        }
      }
    },
    "/messaging/info/version": {
      "get": {
        "operationId": "getVersion",
        "tags": [
          "Info"
        ],
        "summary": "Get API version info",
        "security": [],
        "responses": {
          "200": {
            "description": "Version info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__VersionResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/info/status": {
      "get": {
        "operationId": "getStatus",
        "tags": [
          "Info"
        ],
        "summary": "Get API runtime status",
        "security": [],
        "responses": {
          "200": {
            "description": "Status info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__StatusResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/bridge/route": {
      "get": {
        "operationId": "getBridgeRoute",
        "tags": [
          "Bridge"
        ],
        "summary": "Verify a project token, resolve live project authority, and return the regional WSS endpoint.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "wsUrl": {
                      "type": "string",
                      "format": "uri",
                      "description": "URL for the ws.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
                    },
                    "region": {
                      "type": "string",
                      "enum": [
                        "BR",
                        "US",
                        "IN",
                        "Auto"
                      ],
                      "description": "Specifies region for this schema.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `BR` | Br. |\n| `US` | Us. |\n| `IN` | In. |\n| `Auto` | Auto. |"
                    },
                    "kind": {
                      "type": "string",
                      "enum": [
                        "sandbox",
                        "production"
                      ],
                      "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `sandbox` | Sandbox. |\n| `production` | Production. |"
                    },
                    "signal": {
                      "type": "string",
                      "enum": [
                        "customer",
                        "bartender"
                      ],
                      "description": "Specifies signal for this schema.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `customer` | Customer. |\n| `bartender` | Bartender. |"
                    },
                    "tokenKind": {
                      "type": "string",
                      "enum": [
                        "project"
                      ],
                      "description": "Category assigned to token.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `project` | Project. |"
                    },
                    "expiresAt": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Unix timestamp in milliseconds when this resource expires.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    }
                  },
                  "required": [
                    "wsUrl",
                    "region",
                    "kind",
                    "signal",
                    "tokenKind",
                    "expiresAt"
                  ]
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "service_unavailable",
                    "message": "A required service is unavailable. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#service-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `bridge:connect`",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ]
      }
    },
    "/messaging/features/evaluate": {
      "post": {
        "operationId": "evaluateFeatures",
        "tags": [
          "Features"
        ],
        "summary": "Evaluate feature availability",
        "description": "Returns feature decisions for the authenticated organization or project. Client credentials cannot access this operation. Machine requests do not record experiment exposure.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "surface": {
                    "type": "string",
                    "maxLength": 100,
                    "pattern": "^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)*$",
                    "description": "Specifies surface for this schema.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `100` characters |\n| Pattern | `^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)*$` |"
                  },
                  "keys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "maxLength": 100,
                      "pattern": "^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)*$"
                    },
                    "maxItems": 50,
                    "description": "Keys associated with this schema.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `50` items |\n| Item string length | At most `100` characters |\n| Item pattern | `^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)*$` |"
                  },
                  "measurementAllowed": {
                    "type": "boolean",
                    "default": false,
                    "description": "Whether measurement allowed."
                  },
                  "locale": {
                    "type": "string",
                    "enum": [
                      "en",
                      "pt-BR"
                    ],
                    "default": "en",
                    "description": "Specifies locale for this schema.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `en` | En. |\n| `pt-BR` | Pt br. |"
                  }
                },
                "required": [
                  "surface",
                  "keys"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Feature decisions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "enum": [
                        true
                      ],
                      "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "decision": {
                            "type": "object",
                            "properties": {
                              "key": {
                                "type": "string",
                                "maxLength": 100,
                                "pattern": "^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)*$",
                                "description": "Specifies key for this decision.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `100` characters |\n| Pattern | `^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)*$` |"
                              },
                              "version": {
                                "type": "integer",
                                "description": "Specifies version for this decision."
                              },
                              "available": {
                                "type": "boolean",
                                "description": "Whether this capability is available."
                              },
                              "enrolled": {
                                "type": "boolean",
                                "description": "Whether enrolled."
                              },
                              "variant": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "Specifies variant for this decision.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
                              },
                              "experimentRevision": {
                                "type": [
                                  "integer",
                                  "null"
                                ],
                                "minimum": 1,
                                "description": "Published experiment policy revision for an assigned native experiment; null otherwise.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `1` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
                              },
                              "experimentAssigned": {
                                "type": "boolean",
                                "description": "Whether experiment assigned."
                              }
                            },
                            "required": [
                              "key",
                              "version",
                              "available",
                              "enrolled",
                              "variant",
                              "experimentRevision",
                              "experimentAssigned"
                            ],
                            "description": "Structured decision values for this data."
                          },
                          "title": {
                            "type": "string",
                            "description": "Human-readable title shown to the recipient or operator."
                          },
                          "description": {
                            "type": "string",
                            "description": "Human-readable description of this resource."
                          },
                          "state": {
                            "type": "string",
                            "enum": [
                              "off",
                              "opt_in",
                              "on"
                            ],
                            "description": "Published access state. `opt_in` requires the team to accept `terms` before the feature is available.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `opt_in` | Opt in. |\n| `on` | On. |"
                          },
                          "termsRevision": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Current terms revision while the feature is opt-in; null otherwise.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
                          },
                          "terms": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Opt-in terms in the requested locale; null when the feature is not opt-in.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
                          },
                          "withdrawal": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Specifies withdrawal for this data.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
                          },
                          "enrollmentSource": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "enum": [
                              "customer",
                              "staff",
                              null
                            ],
                            "description": "Who enabled an opt-in feature for the team: a team owner or admin, or Polymorfa. Null when not enrolled.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `customer` | Customer. |\n| `staff` | Staff. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `customer` or `staff` |\n| Alternative 2 | `null` |"
                          },
                          "exposureToken": {
                            "anyOf": [
                              {
                                "description": "Deprecated. Always null."
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "Specifies exposure token for this data.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Any JSON value matching this alternative |\n| Alternative 2 | `null` |"
                          }
                        },
                        "required": [
                          "decision",
                          "title",
                          "description",
                          "state",
                          "termsRevision",
                          "terms",
                          "withdrawal",
                          "enrollmentSource",
                          "exposureToken"
                        ]
                      },
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "success",
                    "data"
                  ]
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Invalid feature request",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            }
          },
          "403": {
            "description": "Credential cannot access feature evaluation",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            }
          },
          "413": {
            "description": "Request exceeds 16 KiB",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            }
          }
        }
      }
    },
    "/messaging/{session}/pair/qr": {
      "get": {
        "operationId": "getQRCode",
        "tags": [
          "Pairing"
        ],
        "summary": "Get QR code for device pairing",
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `sessions:manage`\n\nDirect-pairing access must be enabled for the team that owns this Number. Use [QuickLink](/integrations/quicklink) when direct pairing is unavailable. Requests without access return 403.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "image"
              ],
              "default": "json"
            },
            "required": false,
            "name": "format",
            "in": "query",
            "description": "Specifies format for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `json` | Json. |\n| `image` | Image. |"
          }
        ],
        "responses": {
          "200": {
            "description": "QR code data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetQRCodeResponse"
                }
              },
              "image/png": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Direct-pairing access is required for this Number. Use QuickLink when it is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/{session}/pair/code": {
      "post": {
        "operationId": "requestPairCode",
        "tags": [
          "Pairing"
        ],
        "summary": "Request a pairing code for a phone number",
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `sessions:manage`\n\nDirect-pairing access must be enabled for the team that owns this Number. Use [QuickLink](/integrations/quicklink) when direct pairing is unavailable. Requests without access return 403.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__PairCodeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Pairing code issued",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__RequestPairCodeResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Direct-pairing access is required for this Number. Use QuickLink when it is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/{session}/messages/send": {
      "post": {
        "operationId": "sendMessage",
        "tags": [
          "Messages"
        ],
        "summary": "Send a message",
        "description": "**Protocols:** Linked Device API · Meta Cloud API\n\n**Required scope:** `messages:write`\n\nSend a message to a conversation. Put exactly one message kind inside content. Testing sessions send only to active testing numbers in the same project; supply the recipient phoneNumber.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Unique key, 1 to 255 bytes of UTF-8, that makes this write safe to retry for 24 hours. A retry with the same key, credential, `Polymorfa-Version`, and request never runs the write again: it returns `409 idempotency_completed` when the original succeeded, or the original server error, with `Idempotent-Replayed: true`. Reusing the key for a different request returns `409 idempotency_conflict`; a retry while the original is still running returns `409 idempotency_in_progress`, and a retry after an unrecorded outcome returns `409 idempotency_outcome_unknown`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__SendMessageRequest"
              },
              "example": {
                "conversation": {
                  "phoneNumber": "+15550001111"
                },
                "content": {
                  "text": "Hello"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Message sent successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SendMessageResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "202": {
            "description": "Accepted for asynchronous processing in response to `Prefer: respond-async`; the result is not included",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__AsyncAcceptedResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Invalid credential",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "402": {
            "description": "Paid service is restricted; review billing and entitlements",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Missing scope or resource access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`unsupported_for_connection`: call permission requests need a Cloud API number; `call_permission_granted`: the person already granted permanent permission. The Idempotency-Key already succeeded (`idempotency_completed`), was used for a different request (`idempotency_conflict`), belongs to a request that is still running (`idempotency_in_progress`, with Retry-After), or belongs to a request whose outcome was not recorded (`idempotency_outcome_unknown`)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "idempotency_conflict",
                    "message": "This Idempotency-Key was already used with a different request. Use a new key for a different request.",
                    "param": null
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#idempotency-conflict"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying `idempotency_in_progress`.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "Idempotent-Replayed": {
                "description": "`true` when this response reports the recorded outcome of an earlier request with the same Idempotency-Key.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "true"
                  ]
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "422": {
            "description": "The supplied media URL could not be fetched",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "`call_permission_request_limited`: WhatsApp limits how often this person can be asked for call permission.",
            "headers": {
              "Retry-After": {
                "description": "Seconds until the limiting window resets, when WhatsApp reports a reset time.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "Polymorfa-RateLimit-Reason": {
                "description": "The limit that blocked the request.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "call_permission_request"
                  ]
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected service failure",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "501": {
            "description": "`operation_not_supported`: the number's connection cannot send this content, such as a poll, or a URL, call or copy-code button on an official WhatsApp Business number",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "502": {
            "description": "Messaging provider failure",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Session or service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "504": {
            "description": "Result unknown after timeout",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/{session}/messages/seen": {
      "post": {
        "operationId": "sendSeen",
        "tags": [
          "Messages"
        ],
        "summary": "Mark messages as seen",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__SeenRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Seen marker confirmed by the messaging backend",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__MessageActionResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "202": {
            "description": "Accepted for asynchronous processing in response to `Prefer: respond-async`; the result is not included",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__AsyncAcceptedResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Invalid credential",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "402": {
            "description": "Paid service is restricted; review billing and entitlements",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Missing scope or resource access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Unexpected service failure",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "502": {
            "description": "Messaging provider failure",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Session or service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "504": {
            "description": "Result unknown after timeout",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API · Meta Cloud API\n\n**Required scope:** `messages:write`"
      }
    },
    "/messaging/{session}/messages/typing": {
      "post": {
        "operationId": "setTyping",
        "tags": [
          "Messages"
        ],
        "summary": "Set typing indicator for a chat",
        "description": "**Protocols:** Linked Device API · Meta Cloud API\n\n**Required scope:** `messages:write`\n\nOn a Linked Devices number, `state` sets typing, recording or paused. On an official WhatsApp Business number, send `state: \"typing\"` with the `id` of a message you received; this marks that message read and shows a typing indicator until you reply or 25 seconds pass. On a Number with both connections, this method uses the Linked Devices connection; use the Graph API status request for official typing. Other states return `501`, and a missing `id` returns `400`.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__TypingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Typing state confirmed by the messaging backend",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__MessageActionResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "202": {
            "description": "Accepted for asynchronous processing in response to `Prefer: respond-async`; the result is not included",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__AsyncAcceptedResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Invalid credential",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "402": {
            "description": "Paid service is restricted; review billing and entitlements",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Missing scope or resource access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "Routing or operation conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Unexpected service failure",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "501": {
            "description": "`operation_not_supported`: official WhatsApp Business numbers support only the `typing` state",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "502": {
            "description": "Messaging provider failure",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Session or service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "504": {
            "description": "Result unknown after timeout",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/{session}/messages/react": {
      "post": {
        "operationId": "sendReaction",
        "tags": [
          "Messages"
        ],
        "summary": "React to a message",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Unique key, 1 to 255 bytes of UTF-8, that makes this write safe to retry for 24 hours. A retry with the same key, credential, `Polymorfa-Version`, and request never runs the write again: it returns `409 idempotency_completed` when the original succeeded, or the original server error, with `Idempotent-Replayed: true`. Reusing the key for a different request returns `409 idempotency_conflict`; a retry while the original is still running returns `409 idempotency_in_progress`, and a retry after an unrecorded outcome returns `409 idempotency_outcome_unknown`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__ReactRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Reaction sent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SendReactionResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "202": {
            "description": "Accepted for asynchronous processing in response to `Prefer: respond-async`; the result is not included",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__AsyncAcceptedResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Invalid credential",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "402": {
            "description": "Paid service is restricted; review billing and entitlements",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Missing scope or resource access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "The Idempotency-Key already succeeded (`idempotency_completed`), was used for a different request (`idempotency_conflict`), belongs to a request that is still running (`idempotency_in_progress`, with Retry-After), or belongs to a request whose outcome was not recorded (`idempotency_outcome_unknown`)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "idempotency_conflict",
                    "message": "This Idempotency-Key was already used with a different request. Use a new key for a different request.",
                    "param": null
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#idempotency-conflict"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying `idempotency_in_progress`.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "Idempotent-Replayed": {
                "description": "`true` when this response reports the recorded outcome of an earlier request with the same Idempotency-Key.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "true"
                  ]
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Unexpected service failure",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "502": {
            "description": "Messaging provider failure",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Session or service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "504": {
            "description": "Result unknown after timeout",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API · Meta Cloud API\n\n**Required scope:** `messages:write`"
      }
    },
    "/messaging/{session}/messages/star": {
      "post": {
        "operationId": "starMessage",
        "tags": [
          "Messages"
        ],
        "summary": "Star or unstar a message",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__StarRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Star status updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__MessageActionResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "202": {
            "description": "Accepted for asynchronous processing in response to `Prefer: respond-async`; the result is not included",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__AsyncAcceptedResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Invalid credential",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "402": {
            "description": "Paid service is restricted; review billing and entitlements",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Missing scope or resource access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "Routing or operation conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Unexpected service failure",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "502": {
            "description": "Messaging provider failure",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Session or service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "504": {
            "description": "Result unknown after timeout",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `messages:write`"
      }
    },
    "/messaging/{session}/chats/{conversation}/messages/{messageId}": {
      "put": {
        "operationId": "editMessage",
        "tags": [
          "Chats"
        ],
        "summary": "Edit a previously sent message",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "conversation",
            "in": "path",
            "description": "Public conversation identifier or E.164 phone number."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "messageId",
            "in": "path",
            "description": "Polymorfa message ID. Use the Polymorfa message's `id` for actions and replies.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Unique key, 1 to 255 bytes of UTF-8, that makes this write safe to retry for 24 hours. A retry with the same key, credential, `Polymorfa-Version`, and request never runs the write again: it returns `409 idempotency_completed` when the original succeeded, or the original server error, with `Idempotent-Replayed: true`. Reusing the key for a different request returns `409 idempotency_conflict`; a retry while the original is still running returns `409 idempotency_in_progress`, and a retry after an unrecorded outcome returns `409 idempotency_outcome_unknown`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__EditMessageRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Message edited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "The Idempotency-Key already succeeded (`idempotency_completed`), was used for a different request (`idempotency_conflict`), belongs to a request that is still running (`idempotency_in_progress`, with Retry-After), or belongs to a request whose outcome was not recorded (`idempotency_outcome_unknown`)",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying `idempotency_in_progress`.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "Idempotent-Replayed": {
                "description": "`true` when this response reports the recorded outcome of an earlier request with the same Idempotency-Key.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "true"
                  ]
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "idempotency_conflict",
                    "message": "This Idempotency-Key was already used with a different request. Use a new key for a different request.",
                    "param": null
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#idempotency-conflict"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `chats:manage`"
      },
      "delete": {
        "operationId": "deleteMessage",
        "tags": [
          "Chats"
        ],
        "summary": "Delete a previously sent message",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "conversation",
            "in": "path",
            "description": "Public conversation identifier or E.164 phone number."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "messageId",
            "in": "path",
            "description": "Polymorfa message ID. Use the Polymorfa message's `id` for actions and replies.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Unique key, 1 to 255 bytes of UTF-8, that makes this write safe to retry for 24 hours. A retry with the same key, credential, `Polymorfa-Version`, and request never runs the write again: it returns `409 idempotency_completed` when the original succeeded, or the original server error, with `Idempotent-Replayed: true`. Reusing the key for a different request returns `409 idempotency_conflict`; a retry while the original is still running returns `409 idempotency_in_progress`, and a retry after an unrecorded outcome returns `409 idempotency_outcome_unknown`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Message deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "The Idempotency-Key already succeeded (`idempotency_completed`), was used for a different request (`idempotency_conflict`), belongs to a request that is still running (`idempotency_in_progress`, with Retry-After), or belongs to a request whose outcome was not recorded (`idempotency_outcome_unknown`)",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying `idempotency_in_progress`.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "Idempotent-Replayed": {
                "description": "`true` when this response reports the recorded outcome of an earlier request with the same Idempotency-Key.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "true"
                  ]
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "idempotency_conflict",
                    "message": "This Idempotency-Key was already used with a different request. Use a new key for a different request.",
                    "param": null
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#idempotency-conflict"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `chats:manage`"
      },
      "get": {
        "operationId": "getChatMessage",
        "tags": [
          "Chats"
        ],
        "summary": "Get a stored message",
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `messages:read`\n\nReturns one stored message. Beta: requires team enrollment.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "description": "Number ID."
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          },
          {
            "schema": {
              "type": "string",
              "description": "Conversation ID or E.164 phone number."
            },
            "required": true,
            "name": "conversation",
            "in": "path",
            "description": "Public conversation identifier or E.164 phone number."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$",
              "description": "Opaque Polymorfa resource ID. Keep this value as a string.",
              "example": "739182640518203"
            },
            "required": true,
            "name": "messageId",
            "in": "path",
            "description": "Polymorfa message ID. Use the Polymorfa message's `id` for actions and replies.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "The message",
            "headers": {
              "Polymorfa-Data-Region": {
                "description": "Data region that served the stored history.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetChatMessageResponse"
                }
              }
            }
          },
          "400": {
            "description": "A filter or cursor is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "The credential is missing or invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "The credential lacks the scope, is a client token, or the team is not enrolled in the beta.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "The Number or conversation is unavailable, or hosted message storage is not enabled (`hms_not_enabled`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "The history service for the Number's data region is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/{session}/chats/{conversation}/archive": {
      "post": {
        "operationId": "archiveChat",
        "tags": [
          "Chats"
        ],
        "summary": "Archive a chat",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "conversation",
            "in": "path",
            "description": "Public conversation identifier or E.164 phone number."
          }
        ],
        "responses": {
          "200": {
            "description": "Chat archived",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `chats:manage`"
      }
    },
    "/messaging/{session}/chats/{conversation}/unarchive": {
      "post": {
        "operationId": "unarchiveChat",
        "tags": [
          "Chats"
        ],
        "summary": "Unarchive a chat",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "conversation",
            "in": "path",
            "description": "Public conversation identifier or E.164 phone number."
          }
        ],
        "responses": {
          "200": {
            "description": "Chat unarchived",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `chats:manage`"
      }
    },
    "/messaging/{session}/chats/{conversation}/disappearing": {
      "put": {
        "operationId": "setChatDisappearingTimer",
        "tags": [
          "Chats"
        ],
        "summary": "Set the disappearing-message timer for a chat",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "conversation",
            "in": "path",
            "description": "Public conversation identifier or E.164 phone number."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__DisappearingTimerRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Disappearing-message timer updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `chats:manage`"
      }
    },
    "/messaging/{session}/chats": {
      "get": {
        "operationId": "listChats",
        "tags": [
          "Chats"
        ],
        "summary": "List stored conversations",
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `chats:read`\n\nLists conversations with stored messages for a Number with hosted message storage, most recent activity first. Beta: requires team enrollment.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "description": "Number ID."
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50,
              "description": "Page size, from 1 through 100.",
              "example": 50
            },
            "required": false,
            "name": "limit",
            "in": "query",
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 1024,
              "pattern": "^[A-Za-z0-9_-]+$",
              "description": "Opaque cursor from `nextCursor` or `previousCursor`. Reuse it only with the same path and filters."
            },
            "required": false,
            "name": "cursor",
            "in": "query",
            "description": "Specifies cursor for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `1024` characters |\n| Pattern | `^[A-Za-z0-9_-]+$` |"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "direct",
                "group",
                "channel",
                "broadcast"
              ],
              "description": "Return only conversations of this kind."
            },
            "required": false,
            "name": "kind",
            "in": "query",
            "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `direct` | Direct. |\n| `group` | Group. |\n| `channel` | Channel. |\n| `broadcast` | Broadcast. |"
          },
          {
            "schema": {
              "type": "string",
              "format": "date-time",
              "description": "Return conversations with activity at or after this time (ISO 8601)."
            },
            "required": false,
            "name": "activeSince",
            "in": "query",
            "description": "Specifies active since for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          {
            "schema": {
              "type": "string",
              "format": "date-time",
              "description": "Return conversations whose latest activity is before this time (ISO 8601)."
            },
            "required": false,
            "name": "activeBefore",
            "in": "query",
            "description": "Specifies active before for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        ],
        "responses": {
          "200": {
            "description": "One page of conversations",
            "headers": {
              "Polymorfa-Data-Region": {
                "description": "Data region that served the stored history.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__ListChatsResponse"
                }
              }
            }
          },
          "400": {
            "description": "A filter or cursor is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "The credential is missing or invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "The credential lacks the scope, is a client token, or the team is not enrolled in the beta.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "The Number or conversation is unavailable, or hosted message storage is not enabled (`hms_not_enabled`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "The history service for the Number's data region is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/{session}/chats/{conversation}": {
      "get": {
        "operationId": "getChat",
        "tags": [
          "Chats"
        ],
        "summary": "Get a stored conversation",
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `chats:read`\n\nReturns one conversation with stored messages. Beta: requires team enrollment.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "description": "Number ID."
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          },
          {
            "schema": {
              "type": "string",
              "description": "Conversation ID or E.164 phone number."
            },
            "required": true,
            "name": "conversation",
            "in": "path",
            "description": "Public conversation identifier or E.164 phone number."
          }
        ],
        "responses": {
          "200": {
            "description": "The conversation",
            "headers": {
              "Polymorfa-Data-Region": {
                "description": "Data region that served the stored history.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetChatResponse"
                }
              }
            }
          },
          "400": {
            "description": "A filter or cursor is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "The credential is missing or invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "The credential lacks the scope, is a client token, or the team is not enrolled in the beta.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "The Number or conversation is unavailable, or hosted message storage is not enabled (`hms_not_enabled`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "The history service for the Number's data region is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/{session}/chats/{conversation}/messages": {
      "get": {
        "operationId": "listChatMessages",
        "tags": [
          "Chats"
        ],
        "summary": "List stored messages in a conversation",
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `messages:read`\n\nLists stored messages in one conversation, newest first by default. Page in either direction with `nextCursor` and `previousCursor`. Beta: requires team enrollment.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "description": "Number ID."
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          },
          {
            "schema": {
              "type": "string",
              "description": "Conversation ID or E.164 phone number."
            },
            "required": true,
            "name": "conversation",
            "in": "path",
            "description": "Public conversation identifier or E.164 phone number."
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50,
              "description": "Page size, from 1 through 100.",
              "example": 50
            },
            "required": false,
            "name": "limit",
            "in": "query",
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 1024,
              "pattern": "^[A-Za-z0-9_-]+$",
              "description": "Opaque cursor from `nextCursor` or `previousCursor`. Reuse it only with the same path and filters."
            },
            "required": false,
            "name": "cursor",
            "in": "query",
            "description": "Specifies cursor for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `1024` characters |\n| Pattern | `^[A-Za-z0-9_-]+$` |"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "desc",
                "asc"
              ],
              "default": "desc",
              "description": "`desc` returns newest messages first; `asc` returns oldest first."
            },
            "required": false,
            "name": "order",
            "in": "query",
            "description": "Specifies order for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `desc` | Desc. |\n| `asc` | Asc. |"
          },
          {
            "schema": {
              "type": "string",
              "format": "date-time",
              "description": "Return messages sent at or after this time (ISO 8601)."
            },
            "required": false,
            "name": "since",
            "in": "query",
            "description": "Specifies since for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          {
            "schema": {
              "type": "string",
              "format": "date-time",
              "description": "Return messages sent before this time (ISO 8601)."
            },
            "required": false,
            "name": "until",
            "in": "query",
            "description": "Specifies until for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "inbound",
                "outbound"
              ],
              "description": "`inbound` returns messages from contacts; `outbound` returns messages sent by the Number."
            },
            "required": false,
            "name": "direction",
            "in": "query",
            "description": "Specifies direction for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inbound` | Inbound. |\n| `outbound` | Outbound. |"
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[a-z][a-z_]{0,31}(?:,[a-z][a-z_]{0,31}){0,15}$",
              "description": "Comma-separated message types, for example `text,image`. Up to 16 types.",
              "example": "text,image"
            },
            "required": false,
            "name": "types",
            "in": "query",
            "description": "Specifies types for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z][a-z_]{0,31}(?:,[a-z][a-z_]{0,31}){0,15}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "One page of messages",
            "headers": {
              "Polymorfa-Data-Region": {
                "description": "Data region that served the stored history.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__ListChatMessagesResponse"
                }
              }
            }
          },
          "400": {
            "description": "A filter or cursor is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "The credential is missing or invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "The credential lacks the scope, is a client token, or the team is not enrolled in the beta.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "The Number or conversation is unavailable, or hosted message storage is not enabled (`hms_not_enabled`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "The history service for the Number's data region is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/{session}/chats/{conversation}/messages/{messageId}/media": {
      "get": {
        "operationId": "getChatMessageMedia",
        "tags": [
          "Chats"
        ],
        "summary": "Download stored message media",
        "description": "**Protocols:** Meta Cloud API\n\n**Required scopes (all):** `messages:read` · `media:read`\n\nReturns the stored copy of an Official API message's media when `mediaRetrieval.state` is `stored`. Requires `messages:read` and `media:read`. Beta: requires team enrollment.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "description": "Number ID."
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          },
          {
            "schema": {
              "type": "string",
              "description": "Conversation ID or E.164 phone number."
            },
            "required": true,
            "name": "conversation",
            "in": "path",
            "description": "Public conversation identifier or E.164 phone number."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$",
              "description": "Opaque Polymorfa resource ID. Keep this value as a string.",
              "example": "739182640518203"
            },
            "required": true,
            "name": "messageId",
            "in": "path",
            "description": "Polymorfa message ID. Use the Polymorfa message's `id` for actions and replies.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "The media bytes, with the stored content type",
            "headers": {
              "Polymorfa-Data-Region": {
                "description": "Data region that served the stored history.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "*/*": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "A filter or cursor is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "The credential is missing or invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "The credential lacks the scope, is a client token, or the team is not enrolled in the beta.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "The Number, conversation or message is unavailable, no stored copy exists, or hosted message storage is not enabled (`hms_not_enabled`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "The history service for the Number's data region is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/{session}/chats/{conversation}/service-window": {
      "get": {
        "operationId": "getCustomerServiceWindow",
        "tags": [
          "Chats"
        ],
        "summary": "Get the customer service window",
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `chats:read`\n\nReturns whether free-form messages can be sent to a person from a Number's active Official API connection. WhatsApp's customer service window opens for 24 hours when the person messages or calls the Number. Outside it, only approved templates can be sent. Beta: requires team enrollment.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "description": "Number ID."
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          },
          {
            "schema": {
              "type": "string",
              "description": "Conversation ID or E.164 phone number."
            },
            "required": true,
            "name": "conversation",
            "in": "path",
            "description": "Public conversation identifier or E.164 phone number."
          }
        ],
        "responses": {
          "200": {
            "description": "The window state",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetCustomerServiceWindowResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "A parameter is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "The credential is missing or invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "The credential lacks the scope, is a client token, or the team is not enrolled in the beta.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "The Number or conversation is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "The Number has no Official API connection (`unsupported_for_connection`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "The Number's regional evidence service is temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/{session}/meta-pricing": {
      "get": {
        "operationId": "getMetaPricingSummary",
        "tags": [
          "Sessions"
        ],
        "summary": "Summarize Meta-reported pricing",
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `sessions:read`\n\nCounts the messages sent from the Number's active Official API connection generation by the pricing classification WhatsApp reported for each one. Meta bills your WhatsApp Business Account directly. These counts are not a Polymorfa charge and contain no prices. Each message is counted in the period of its first pricing report. Beta: requires team enrollment.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "description": "Number ID."
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          },
          {
            "schema": {
              "type": "string",
              "format": "date-time",
              "description": "Start of the period, inclusive (ISO 8601). Defaults to 30 days before `until`."
            },
            "required": false,
            "name": "since",
            "in": "query",
            "description": "Specifies since for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          {
            "schema": {
              "type": "string",
              "format": "date-time",
              "description": "End of the period, exclusive (ISO 8601). Defaults to now. The period can be at most 93 days."
            },
            "required": false,
            "name": "until",
            "in": "query",
            "description": "Specifies until for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Meta-reported message counts",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetMetaPricingSummaryResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "A parameter is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "The credential is missing or invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "The credential lacks the scope, is a client token, or the team is not enrolled in the beta.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "The Number is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "The Number has no Official API connection (`unsupported_for_connection`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "The Number's regional evidence service is temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/{session}/call-permissions/{to}": {
      "get": {
        "operationId": "getCallPermission",
        "tags": [
          "Calls"
        ],
        "summary": "Get a person's call permission",
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `sessions:read`\n\nReturns whether the person has allowed this number to call them. On Cloud API numbers WhatsApp is asked on every request and the answer includes its limits on permission requests and calls. Linked-device numbers return `409 unsupported_for_connection`.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "description": "User ID or phone number in E.164 format (URL-encode `+` as `%2B`)."
            },
            "required": true,
            "name": "to",
            "in": "path",
            "description": "Specifies to for this path parameter."
          }
        ],
        "responses": {
          "200": {
            "description": "The call permission.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetCallPermissionResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`unsupported_for_connection`: the number is not a Cloud API number.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "unsupported_for_connection",
                    "message": "The session's connection does not support this call operation.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#unsupported-for-connection"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/voip/calls/check": {
      "post": {
        "operationId": "checkCall",
        "tags": [
          "Calls"
        ],
        "summary": "Check whether a call can be placed",
        "description": "**Required scope:** `sessions:read`\n\nRuns the checks a call placement runs, without calling: the number's calling switch, the team's do-not-call list and blocked country codes, and on Cloud API numbers the person's call permission and WhatsApp's call limits. If WhatsApp's permission status is unavailable and no other refusal is known, returns 503 service_unavailable. Server credentials only.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CallCheckRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Check result.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__CheckCallResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "`service_unavailable`: required call-check state is unavailable; retry later.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "service_unavailable",
                    "message": "A required service is unavailable. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#service-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/voip/call-links": {
      "post": {
        "operationId": "voipCreateCallLink",
        "tags": [
          "VoIP"
        ],
        "summary": "Create a WhatsApp call link",
        "description": "**Required scope:** `sessions:manage`\n\nRequires a server credential with sessions:manage and a Linked Device Number with calling enabled. Client tokens and Cloud API-only Numbers are refused. This operation does not place or join a call. Idempotency-Key is not supported; do not automatically retry an unknown outcome. Keep call-link tokens and URLs private.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__VoipCreateCallLinkRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Link created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__VoipCreatedCallLinkEnvelope"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "Unsupported connection or another call-link request is in progress",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "502": {
            "description": "WhatsApp failed or returned an invalid response; creation outcome can be unknown",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "upstream_error",
                    "code": "upstream_failure",
                    "message": "The messaging provider could not complete the request.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#upstream-failure"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Calling settings, Number authority or the connection are unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "service_unavailable",
                    "message": "A required service is unavailable. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#service-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/voip/call-links/preview": {
      "post": {
        "operationId": "voipPreviewCallLink",
        "tags": [
          "VoIP"
        ],
        "summary": "Preview a WhatsApp call link",
        "description": "**Required scope:** `sessions:manage`\n\nRequires a server credential with sessions:manage and a Linked Device Number with calling enabled. Client tokens and Cloud API-only Numbers are refused. This operation does not place or join a call. Idempotency-Key is not supported; do not automatically retry an unknown outcome. Keep call-link tokens and URLs private.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__VoipPreviewCallLinkRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Link preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__VoipPreviewedCallLinkEnvelope"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "Unsupported connection or another call-link request is in progress",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "502": {
            "description": "WhatsApp failed or returned an invalid response; creation outcome can be unknown",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "upstream_error",
                    "code": "upstream_failure",
                    "message": "The messaging provider could not complete the request.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#upstream-failure"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Calling settings, Number authority or the connection are unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "service_unavailable",
                    "message": "A required service is unavailable. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#service-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/voip/calls": {
      "post": {
        "operationId": "voipPlaceCall",
        "tags": [
          "VoIP"
        ],
        "summary": "Place an outbound call from a session",
        "description": "**Required scope:** `sessions:manage`\n\nOriginates a WhatsApp call to `to`, an ad-hoc group call to `participants` (2 to 31 distinct E.164 phone numbers or public user IDs), or every remote member of `groupId` (a public group ID). Group rosters must contain 2 to 31 remote members; a membership change during placement refuses the call. Provide exactly one destination form. Group calls require a Linked Device number and check every recipient against the team policy and number restrictions before dialing. The call is owned by the placing participant and rings on the callee's device: `call.accepted` follows when they pick up and `call.ended` when either side hangs up. Carry its audio and video with a Polymorfa Calls SDK. `exclusive: true` claims the call for the placing participant. Client tokens place from their bound session; server credentials must name one. Outbound starts share a rate limit per organization and source session across server credentials and client tokens; client-token rules also apply.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__VoipPlaceCallRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Call placed and ringing",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__VoipPlacedCallResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "402": {
            "description": "`gate_limit_reached` when an enforced usage limit refuses placement; `entitlement_required` when the account lacks a required capability. The outbound monthly gate remains in record mode until placement reservations are available.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "gate_limit_reached",
                    "message": "A usage limit for this team or number was reached.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#gate-limit-reached"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "`call_permission_required` when the recipient has not granted this business permission to call them, `number_restricted` when WhatsApp restricts the number to calling people it has already chatted with and the callee is not one of them (`Retry-After` gives the seconds until the restriction ends, when known), or the credential is not permitted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "call_permission_required",
                    "message": "The recipient has not granted this business permission to call them.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#call-permission-required"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`unsupported_for_connection` when the session's connection cannot place this call (Cloud API calls are audio only), or `state_conflict` when the named session cannot place an outbound call yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "unsupported_for_connection",
                    "message": "The session's connection does not support this call operation.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#unsupported-for-connection"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "410": {
            "description": "Call ended — the pod that owned its media is gone (pod_lost)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_gone",
                    "message": "The requested retained resource has expired or was removed.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-gone"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Outbound call rate exceeded for this organization and source session, or a client-token setup or concurrency limit was reached",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "rate_limit_error",
                    "code": "rate_limit_exceeded",
                    "message": "The request limit was reached. Follow Retry-After when supplied.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#rate-limit-exceeded"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "501": {
            "description": "Outbound calls are not available on this deployment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "operation_not_supported",
                    "message": "This operation is not supported.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#operation-not-supported"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "502": {
            "description": "`upstream_failure` when the Cloud API refused or failed the call action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "upstream_error",
                    "code": "upstream_failure",
                    "message": "The messaging provider could not complete the request.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#upstream-failure"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Call unavailable — the owning pod is at capacity or draining, call authority cannot be verified, or usage limits could not be checked",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "service_unavailable",
                    "message": "A required service is unavailable. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#service-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/voip/calls/{id}/accept": {
      "post": {
        "operationId": "voipAcceptCall",
        "tags": [
          "VoIP"
        ],
        "summary": "Answer or join a call",
        "description": "**Required scope:** `sessions:manage`\n\nThe first accept answers a ringing call. `exclusive: true` claims it: other participants then receive `409 call_claimed` for accept and media, and their open connections close. Without a claim, later accepts join the answered call. Retrying with the same participant returns the same result. An exclusive request from another participant on a shared call is refused with `409 call_claimed`.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "example": "call-123"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__VoipAcceptCallRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Call answered or joined",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__VoipAcceptCallResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`call_claimed` when another participant claimed the call, or `state_conflict` when the call is not ready",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "call_claimed",
                    "message": "Another participant claimed this call.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#call-claimed"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "410": {
            "description": "Call ended — the pod that owned its media is gone (pod_lost)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_gone",
                    "message": "The requested retained resource has expired or was removed.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-gone"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Call unavailable — the owning pod is at capacity or draining, or call authority cannot be verified",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "service_unavailable",
                    "message": "A required service is unavailable. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#service-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/voip/calls/{id}/reject": {
      "post": {
        "operationId": "voipRejectCall",
        "tags": [
          "VoIP"
        ],
        "summary": "Decline a ringing call",
        "description": "**Required scope:** `sessions:manage`\n\nDeclines a ringing call and releases it. Returns `409 call_not_ringing` when the call is not ringing.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "example": "call-123"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__VoipRejectCallRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Call declined",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`call_not_ringing` when the call was already answered, declined, or ended",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "call_not_ringing",
                    "message": "The call is no longer ringing.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#call-not-ringing"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "410": {
            "description": "Call ended — the pod that owned its media is gone (pod_lost)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_gone",
                    "message": "The requested retained resource has expired or was removed.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-gone"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Call unavailable — the owning pod is at capacity or draining, or call authority cannot be verified",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "service_unavailable",
                    "message": "A required service is unavailable. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#service-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/voip/calls/{id}/leave": {
      "post": {
        "operationId": "voipLeaveCall",
        "tags": [
          "VoIP"
        ],
        "summary": "Close one connection without ending the call",
        "description": "**Required scope:** `sessions:manage`\n\nDisconnects the named connection. The call and the participant's other connections continue. Use `DELETE /voip/calls/{id}` to end the call for everyone.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "example": "call-123"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__VoipLeaveRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Connection closed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "Call not ready — no media session on the owning pod yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "410": {
            "description": "Call ended — the pod that owned its media is gone (pod_lost)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_gone",
                    "message": "The requested retained resource has expired or was removed.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-gone"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Call unavailable — the owning pod is at capacity or draining, or call authority cannot be verified",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "service_unavailable",
                    "message": "A required service is unavailable. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#service-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/voip/calls/{id}/reaction": {
      "post": {
        "operationId": "sendCallReaction",
        "tags": [
          "VoIP"
        ],
        "summary": "Send or clear a call reaction",
        "description": "**Required scope:** `sessions:manage`\n\nRequires an attached connection owned by the acting participant, sessions:manage, and voip_signal for client tokens. Linked-device calls only; unsupported backends return 409 unsupported_for_connection. Reactions are transient and are not replayed. Hand state is shared by the Number and restored on media reconnection. Do not automatically retry an uncertain result.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "example": "call-123"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__VoipReactionRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Reaction accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "The call is not ready (`state_conflict`), or the calling backend does not support this action (`unsupported_for_connection`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "410": {
            "description": "Call ended — the pod that owned its media is gone (pod_lost)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_gone",
                    "message": "The requested retained resource has expired or was removed.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-gone"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Call unavailable — the owning pod is at capacity or draining, or call authority cannot be verified",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "service_unavailable",
                    "message": "A required service is unavailable. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#service-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/voip/calls/{id}/hand": {
      "post": {
        "operationId": "setCallHandRaised",
        "tags": [
          "VoIP"
        ],
        "summary": "Raise or lower the Number's hand in a call",
        "description": "**Required scope:** `sessions:manage`\n\nRequires an attached connection owned by the acting participant, sessions:manage, and voip_signal for client tokens. Linked-device calls only; unsupported backends return 409 unsupported_for_connection. Reactions are transient and are not replayed. Hand state is shared by the Number and restored on media reconnection. Do not automatically retry an uncertain result.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "example": "call-123"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__VoipHandRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Hand state accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "The call is not ready (`state_conflict`), or the calling backend does not support this action (`unsupported_for_connection`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "410": {
            "description": "Call ended — the pod that owned its media is gone (pod_lost)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_gone",
                    "message": "The requested retained resource has expired or was removed.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-gone"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Call unavailable — the owning pod is at capacity or draining, or call authority cannot be verified",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "service_unavailable",
                    "message": "A required service is unavailable. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#service-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/voip/calls/{id}/participants/ring": {
      "post": {
        "operationId": "voipRingParticipant",
        "tags": [
          "VoIP"
        ],
        "summary": "Ring an existing call participant again",
        "description": "**Required scope:** `sessions:manage`\n\nRings one non-connected participant already in the upstream call roster. Does not add a participant or change the roster optimistically. Requires the same destination permission as an invitation. Cloud API calls do not support this operation.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "example": "call-123"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__VoipAddParticipantRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Ring request accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "The call is not ready (`state_conflict`), or the calling backend does not support this action (`unsupported_for_connection`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "410": {
            "description": "Call ended — the pod that owned its media is gone (pod_lost)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_gone",
                    "message": "The requested retained resource has expired or was removed.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-gone"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Call setup rate exceeded for this client token, or its concurrency limit is reached",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "rate_limit_error",
                    "code": "rate_limit_exceeded",
                    "message": "The request limit was reached. Follow Retry-After when supplied.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#rate-limit-exceeded"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Call unavailable — the owning pod is at capacity or draining, or call authority cannot be verified",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "service_unavailable",
                    "message": "A required service is unavailable. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#service-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/voip/calls/{id}/participants": {
      "post": {
        "operationId": "voipAddParticipant",
        "tags": [
          "VoIP"
        ],
        "summary": "Invite another party into a live call",
        "description": "**Required scope:** `sessions:manage`\n\nRings `to` (an E.164 phone number or a user ID) into the call, turning a 1:1 call into a group call. The invitee enters the roster as `invited`; roster changes reach media sockets as `participant_joined` / `participant_state` / `participant_left` frames. 409 until the call has a live leg.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "example": "call-123"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__VoipAddParticipantRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Participant invited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__VoipAddParticipantResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "`number_restricted` when WhatsApp restricts the number to calling people it has already chatted with and the invitee is not one of them (`Retry-After` gives the seconds until the restriction ends, when known), or the credential is not permitted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "number_restricted",
                    "message": "WhatsApp restricts this number to calling people it has already chatted with. The restriction lifts on its own; follow Retry-After when supplied.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#number-restricted"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`unsupported_for_connection` when the session connects through the Cloud API, which has no group calls, or `state_conflict` when the call has no live leg yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "unsupported_for_connection",
                    "message": "The session's connection does not support this call operation.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#unsupported-for-connection"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "410": {
            "description": "Call ended — the pod that owned its media is gone (pod_lost)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_gone",
                    "message": "The requested retained resource has expired or was removed.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-gone"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Call setup rate exceeded for this client token, or its concurrency limit is reached",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "rate_limit_error",
                    "code": "rate_limit_exceeded",
                    "message": "The request limit was reached. Follow Retry-After when supplied.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#rate-limit-exceeded"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Call unavailable — the owning pod is at capacity or draining, or call authority cannot be verified",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "service_unavailable",
                    "message": "A required service is unavailable. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#service-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/voip/calls/{id}/reports": {
      "post": {
        "operationId": "voipReportCallDiagnostics",
        "tags": [
          "VoIP"
        ],
        "summary": "Report call diagnostics from your app",
        "description": "**Required scope:** `sessions:manage`\n\nRecords quality figures or an error that your app measured for one of its connections. The Console shows the latest quality report and the reported errors of each connection on the call. Reports are optional and are accepted while the call is live and for 10 minutes after it ends. Each connection can send one quality report every 5 seconds and 20 error reports per minute. At most 200 reports are kept per call: at that limit a quality report replaces the same connection's oldest quality report. A quality report from a connection with no stored quality report, and every error report, is accepted but not stored.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "example": "call-123"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__VoipCallReportRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Report accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`state_conflict` when the call is not live, ended more than 10 minutes ago, or is outside the credential's boundary",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "410": {
            "description": "Call ended — the pod that owned its media is gone (pod_lost)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_gone",
                    "message": "The requested retained resource has expired or was removed.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-gone"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "The connection exceeded its report limit: one quality report every 5 seconds or 20 error reports per minute",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "rate_limit_error",
                    "code": "rate_limit_exceeded",
                    "message": "The request limit was reached. Follow Retry-After when supplied.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#rate-limit-exceeded"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Call authority or report storage is unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "service_unavailable",
                    "message": "A required service is unavailable. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#service-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/voip/calls/{id}": {
      "delete": {
        "operationId": "voipTeardown",
        "tags": [
          "VoIP"
        ],
        "summary": "End a call for everyone",
        "description": "**Required scope:** `sessions:manage`\n\nEnds the call and closes every connection. Repeating the request succeeds.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "example": "call-123"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          }
        ],
        "responses": {
          "200": {
            "description": "Call ended",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "Call not ready — no media session on the owning pod yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "410": {
            "description": "Call ended — the pod that owned its media is gone (pod_lost)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_gone",
                    "message": "The requested retained resource has expired or was removed.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-gone"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Call unavailable — the owning pod is at capacity or draining, or call authority cannot be verified",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "service_unavailable",
                    "message": "A required service is unavailable. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#service-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/{session}/calls/{callId}/reject": {
      "post": {
        "operationId": "rejectCall",
        "tags": [
          "Calls"
        ],
        "summary": "Reject an incoming WhatsApp call",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "required": true,
            "name": "callId",
            "in": "path",
            "description": "Identifier of the WhatsApp call.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__RejectCallRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Call rejected",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `chats:manage`"
      }
    },
    "/messaging/{session}/groups": {
      "get": {
        "operationId": "listGroups",
        "tags": [
          "Groups"
        ],
        "summary": "List groups the session is a member of",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "responses": {
          "200": {
            "description": "Group list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__ListGroupsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `groups:read`"
      },
      "post": {
        "operationId": "createGroup",
        "tags": [
          "Groups"
        ],
        "summary": "Create a new group",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CreateGroupRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Group created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__CreateGroupResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `groups:manage`"
      }
    },
    "/messaging/{session}/groups/join-info": {
      "get": {
        "operationId": "getGroupJoinInfo",
        "tags": [
          "Groups"
        ],
        "summary": "Look up group info for an invite code",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1
            },
            "required": true,
            "name": "code",
            "in": "query",
            "description": "Stable machine-readable code for this result.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          }
        ],
        "responses": {
          "200": {
            "description": "Join info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetGroupJoinInfoResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `groups:read`"
      }
    },
    "/messaging/{session}/groups/join": {
      "post": {
        "operationId": "joinGroup",
        "tags": [
          "Groups"
        ],
        "summary": "Join a group by invite code",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__JoinGroupRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Joined group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `groups:manage`"
      }
    },
    "/messaging/{session}/groups/{id}/capabilities": {
      "get": {
        "operationId": "getGroupCapabilities",
        "tags": [
          "Groups"
        ],
        "summary": "Read stored WhatsApp group capabilities",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Account-bound stored group capabilities. Unknown until successful number and group syncs for the linked account. Requires current group membership and the enrolled number-capabilities beta.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetGroupCapabilitiesResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "The stored capability reader, identity resolution or command dispatch is temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "service_unavailable",
                    "message": "A required service is unavailable. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#service-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `groups:read`"
      }
    },
    "/messaging/{session}/groups/{id}": {
      "get": {
        "operationId": "getGroup",
        "tags": [
          "Groups"
        ],
        "summary": "Get group details",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Group details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetGroupResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `groups:read`"
      },
      "delete": {
        "operationId": "deleteGroup",
        "tags": [
          "Groups"
        ],
        "summary": "Leave a group (DELETE alias)",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Left group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `groups:manage`"
      }
    },
    "/messaging/{session}/groups/{id}/leave": {
      "post": {
        "operationId": "leaveGroup",
        "tags": [
          "Groups"
        ],
        "summary": "Leave a group",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Left group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `groups:manage`"
      }
    },
    "/messaging/{session}/groups/{id}/subject": {
      "put": {
        "operationId": "setGroupSubject",
        "tags": [
          "Groups"
        ],
        "summary": "Set group subject (name)",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__SetGroupFieldRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Subject updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `groups:manage`"
      }
    },
    "/messaging/{session}/groups/{id}/description": {
      "put": {
        "operationId": "setGroupDescription",
        "tags": [
          "Groups"
        ],
        "summary": "Set group description",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__SetGroupFieldRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Description updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `groups:manage`"
      }
    },
    "/messaging/{session}/groups/{id}/invite-code": {
      "get": {
        "operationId": "getGroupInviteCode",
        "tags": [
          "Groups"
        ],
        "summary": "Get the current group invite code",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Invite code",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetGroupInviteCodeResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `groups:read`"
      }
    },
    "/messaging/{session}/groups/{id}/invite-code/revoke": {
      "post": {
        "operationId": "revokeGroupInviteCode",
        "tags": [
          "Groups"
        ],
        "summary": "Revoke the current invite code and generate a new one",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "New invite code",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__RevokeGroupInviteCodeResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `groups:manage`"
      }
    },
    "/messaging/{session}/groups/{id}/participants": {
      "get": {
        "operationId": "getGroupParticipants",
        "tags": [
          "Groups"
        ],
        "summary": "List group participants",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Participant list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetGroupParticipantsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `groups:read`"
      }
    },
    "/messaging/{session}/groups/{id}/participants/add": {
      "post": {
        "operationId": "addGroupParticipants",
        "tags": [
          "Groups"
        ],
        "summary": "Add participants to a group",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__GroupParticipantsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Participants added",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `groups:manage`"
      }
    },
    "/messaging/{session}/groups/{id}/participants/remove": {
      "post": {
        "operationId": "removeGroupParticipants",
        "tags": [
          "Groups"
        ],
        "summary": "Remove participants from a group",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__GroupParticipantsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Participants removed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `groups:manage`"
      }
    },
    "/messaging/{session}/groups/{id}/admin/promote": {
      "post": {
        "operationId": "promoteGroupAdmin",
        "tags": [
          "Groups"
        ],
        "summary": "Promote participants to admin",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__GroupParticipantsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Participants promoted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `groups:manage`"
      }
    },
    "/messaging/{session}/groups/{id}/admin/demote": {
      "post": {
        "operationId": "demoteGroupAdmin",
        "tags": [
          "Groups"
        ],
        "summary": "Demote admin participants",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__GroupParticipantsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Participants demoted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `groups:manage`"
      }
    },
    "/messaging/{session}/groups/{id}/picture": {
      "put": {
        "operationId": "setGroupPicture",
        "tags": [
          "Groups"
        ],
        "summary": "Set the group profile picture",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__SetGroupPictureRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Picture updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `groups:manage`"
      }
    },
    "/messaging/{session}/groups/{id}/settings/info-edit": {
      "put": {
        "operationId": "setGroupInfoEditing",
        "tags": [
          "Groups"
        ],
        "summary": "Choose who can edit group information",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__GroupAdminOnlySettingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Group information permission updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `groups:manage`"
      }
    },
    "/messaging/{session}/groups/{id}/settings/messages": {
      "put": {
        "operationId": "setGroupMessaging",
        "tags": [
          "Groups"
        ],
        "summary": "Choose who can send group messages",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__GroupAdminOnlySettingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Group messaging permission updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `groups:manage`"
      }
    },
    "/messaging/{session}/groups/{id}/settings/member-add": {
      "put": {
        "operationId": "setGroupMemberAddMode",
        "tags": [
          "Groups"
        ],
        "summary": "Choose who can add group members",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__GroupMemberAddModeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Group member-add mode updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `groups:manage`"
      }
    },
    "/messaging/{session}/groups/{id}/settings/join-approval": {
      "put": {
        "operationId": "setGroupJoinApproval",
        "tags": [
          "Groups"
        ],
        "summary": "Require admin approval for invite-link joins",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__GroupJoinApprovalRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Group join approval updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `groups:manage`"
      }
    },
    "/messaging/{session}/contacts": {
      "get": {
        "operationId": "listContacts",
        "tags": [
          "Contacts"
        ],
        "summary": "List all contacts known to the session",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "responses": {
          "200": {
            "description": "Contact list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__ListContactsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `contacts:read`"
      }
    },
    "/messaging/{session}/contacts/check": {
      "get": {
        "operationId": "checkContacts",
        "tags": [
          "Contacts"
        ],
        "summary": "Check if phone numbers are registered on WhatsApp",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              ]
            },
            "required": true,
            "name": "phone",
            "in": "query",
            "style": "form",
            "explode": false,
            "description": "Phone number in international format.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | Type: `array` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Contact check results",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__CheckContactsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `contacts:read`"
      }
    },
    "/messaging/{session}/contacts/blocked": {
      "get": {
        "operationId": "getBlocklist",
        "tags": [
          "Contacts"
        ],
        "summary": "Get blocked contacts",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "responses": {
          "200": {
            "description": "Blocked contacts",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetBlocklistResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `contacts:read`"
      }
    },
    "/messaging/{session}/contacts/{contactId}": {
      "get": {
        "operationId": "getContact",
        "tags": [
          "Contacts"
        ],
        "summary": "Get a contact by stable user ID",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "contactId",
            "in": "path",
            "description": "Identifier for the contact.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Contact details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetContactResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `contacts:read`"
      }
    },
    "/messaging/{session}/contacts/{contactId}/picture": {
      "get": {
        "operationId": "getContactPicture",
        "tags": [
          "Contacts"
        ],
        "summary": "Get a contact's profile picture URL",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "contactId",
            "in": "path",
            "description": "Identifier for the contact.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Profile picture URL",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetContactPictureResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `contacts:read`"
      }
    },
    "/messaging/{session}/contacts/{contactId}/info": {
      "get": {
        "operationId": "getUserInfo",
        "tags": [
          "Contacts"
        ],
        "summary": "Get live WhatsApp user metadata",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "contactId",
            "in": "path",
            "description": "Identifier for the contact.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "User metadata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetUserInfoResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `contacts:read`"
      }
    },
    "/messaging/{session}/contacts/{contactId}/devices": {
      "get": {
        "operationId": "getUserDevices",
        "tags": [
          "Contacts"
        ],
        "summary": "Get a contact's linked devices",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "contactId",
            "in": "path",
            "description": "Identifier for the contact.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Linked devices",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetUserDevicesResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `contacts:read`"
      }
    },
    "/messaging/{session}/contacts/{contactId}/business-profile": {
      "get": {
        "operationId": "getBusinessProfile",
        "tags": [
          "Contacts"
        ],
        "summary": "Get a WhatsApp business profile",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "contactId",
            "in": "path",
            "description": "Identifier for the contact.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Business profile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetBusinessProfileResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `contacts:read`"
      }
    },
    "/messaging/{session}/contacts/{contactId}/block": {
      "post": {
        "operationId": "blockContact",
        "tags": [
          "Contacts"
        ],
        "summary": "Block a contact",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "contactId",
            "in": "path",
            "description": "Identifier for the contact.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Contact blocked",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `contacts:manage`"
      }
    },
    "/messaging/{session}/contacts/{contactId}/unblock": {
      "post": {
        "operationId": "unblockContact",
        "tags": [
          "Contacts"
        ],
        "summary": "Unblock a contact",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "contactId",
            "in": "path",
            "description": "Identifier for the contact.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Contact unblocked",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `contacts:manage`"
      }
    },
    "/messaging/{session}/business/linked-accounts": {
      "get": {
        "operationId": "getBusinessLinkedAccounts",
        "tags": [
          "Business App"
        ],
        "summary": "Read live accounts linked to the connected WhatsApp Business App",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "responses": {
          "200": {
            "description": "Live linked-account state",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetBusinessLinkedAccountsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `business:read`"
      }
    },
    "/messaging/{session}/business/eligibility": {
      "get": {
        "operationId": "getBusinessEligibility",
        "tags": [
          "Business App"
        ],
        "summary": "Read live feature eligibility for the connected WhatsApp Business App",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "responses": {
          "200": {
            "description": "Live business feature eligibility",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetBusinessEligibilityResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `business:read`"
      }
    },
    "/messaging/{session}/business/profile": {
      "get": {
        "operationId": "getOwnBusinessProfile",
        "tags": [
          "Business App"
        ],
        "summary": "Read the connected WhatsApp Business App profile",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "responses": {
          "200": {
            "description": "Live business profile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetOwnBusinessProfileResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:read`"
      },
      "patch": {
        "operationId": "updateBusinessProfile",
        "tags": [
          "Business App"
        ],
        "summary": "Update the connected WhatsApp Business App profile",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__BusinessProfileUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Profile updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__UpdateBusinessProfileResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:write`"
      }
    },
    "/messaging/{session}/business/profile/cover-photo": {
      "put": {
        "operationId": "setBusinessCoverPhoto",
        "tags": [
          "Business App"
        ],
        "summary": "Set the connected WhatsApp Business App cover photo",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__BusinessCoverPhotoRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Cover photo set",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SetBusinessCoverPhotoResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:write`"
      }
    },
    "/messaging/{session}/business/profile/cover-photo/{coverPhotoId}": {
      "delete": {
        "operationId": "deleteBusinessCoverPhoto",
        "tags": [
          "Business App"
        ],
        "summary": "Delete the connected WhatsApp Business App cover photo",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "required": true,
            "name": "coverPhotoId",
            "in": "path",
            "description": "Identifier of the business-profile cover photo.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
          }
        ],
        "responses": {
          "200": {
            "description": "Cover photo removed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__DeleteBusinessCoverPhotoResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:write`"
      }
    },
    "/messaging/{session}/business/compliance": {
      "get": {
        "operationId": "getBusinessMerchantCompliance",
        "tags": [
          "Business App"
        ],
        "summary": "Read merchant compliance details for the connected WhatsApp Business App account",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "responses": {
          "200": {
            "description": "Live merchant compliance details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetBusinessMerchantComplianceResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:read`"
      },
      "put": {
        "operationId": "setBusinessMerchantCompliance",
        "tags": [
          "Business App"
        ],
        "summary": "Replace merchant compliance details for the connected WhatsApp Business App account",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__BusinessMerchantCompliance"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Merchant compliance details updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SetBusinessMerchantComplianceResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:write`"
      }
    },
    "/messaging/{session}/business/quick-replies": {
      "post": {
        "operationId": "createBusinessQuickReply",
        "tags": [
          "Business App"
        ],
        "summary": "Create a WhatsApp Business App quick reply",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__BusinessQuickReplyMutation"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Quick reply created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__CreateBusinessQuickReplyResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:write`"
      },
      "get": {
        "operationId": "listBusinessQuickReplies",
        "tags": [
          "Business App"
        ],
        "summary": "List remembered WhatsApp Business App quick replies",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "responses": {
          "200": {
            "description": "Best-effort quick reply list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__ListBusinessQuickRepliesResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:read`"
      }
    },
    "/messaging/{session}/business/quick-replies/{quickReplyId}": {
      "put": {
        "operationId": "setBusinessQuickReply",
        "tags": [
          "Business App"
        ],
        "summary": "Replace a WhatsApp Business App quick reply",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 20,
              "pattern": "^[0-9]+$"
            },
            "required": true,
            "name": "quickReplyId",
            "in": "path",
            "description": "Identifier for the quick reply.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `20` characters |\n| Pattern | `^[0-9]+$` |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__BusinessQuickReplyMutation"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Quick reply replaced",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SetBusinessQuickReplyResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:write`"
      },
      "delete": {
        "operationId": "deleteBusinessQuickReply",
        "tags": [
          "Business App"
        ],
        "summary": "Delete a WhatsApp Business App quick reply",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 20,
              "pattern": "^[0-9]+$"
            },
            "required": true,
            "name": "quickReplyId",
            "in": "path",
            "description": "Identifier for the quick reply.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `20` characters |\n| Pattern | `^[0-9]+$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Quick reply deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__DeleteBusinessQuickReplyResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:write`"
      }
    },
    "/messaging/{session}/business/catalog": {
      "get": {
        "operationId": "getBusinessCatalog",
        "tags": [
          "Business App"
        ],
        "summary": "Read a WhatsApp Business App catalog",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "maxLength": 256,
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "query",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          },
          {
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "required": false,
            "name": "after",
            "in": "query",
            "description": "Specifies after for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `2048` characters |"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            },
            "required": false,
            "name": "limit",
            "in": "query",
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1024
            },
            "required": false,
            "name": "width",
            "in": "query",
            "description": "Width in pixels.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `1024` (inclusive) |"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1024
            },
            "required": false,
            "name": "height",
            "in": "query",
            "description": "Height in pixels.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `1024` (inclusive) |"
          }
        ],
        "responses": {
          "200": {
            "description": "Live catalog page",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetBusinessCatalogResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "502": {
            "description": "Upstream WhatsApp request failed or its response could not be mapped",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "upstream_error",
                    "code": "upstream_failure",
                    "message": "The messaging provider could not complete the request.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#upstream-failure"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `business:read`"
      },
      "post": {
        "operationId": "createBusinessCatalog",
        "tags": [
          "Business App"
        ],
        "summary": "Create a catalog for the connected WhatsApp Business App account",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "responses": {
          "200": {
            "description": "Catalog created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__CreateBusinessCatalogResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:write`"
      }
    },
    "/messaging/{session}/business/catalog/cart": {
      "patch": {
        "operationId": "setBusinessCartEnabled",
        "tags": [
          "Business App"
        ],
        "summary": "Enable or disable the connected WhatsApp Business App catalog cart",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__BusinessCartSettingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Cart setting updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SetBusinessCartEnabledResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:write`"
      }
    },
    "/messaging/{session}/business/products/{productId}": {
      "get": {
        "operationId": "getBusinessProduct",
        "tags": [
          "Business App"
        ],
        "summary": "Read a WhatsApp Business App product",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "maxLength": 256
            },
            "required": true,
            "name": "productId",
            "in": "path",
            "description": "Identifier for the product.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |"
          },
          {
            "schema": {
              "type": "string",
              "maxLength": 256,
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "query",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Live product",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetBusinessProductResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "502": {
            "description": "Upstream WhatsApp request failed or its response could not be mapped",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "upstream_error",
                    "code": "upstream_failure",
                    "message": "The messaging provider could not complete the request.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#upstream-failure"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `business:read`"
      },
      "put": {
        "operationId": "updateBusinessProduct",
        "tags": [
          "Business App"
        ],
        "summary": "Replace a product in the connected WhatsApp Business App catalog",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "maxLength": 256
            },
            "required": true,
            "name": "productId",
            "in": "path",
            "description": "Identifier for the product.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__BusinessProductMutationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Product updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__UpdateBusinessProductResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:write`"
      },
      "delete": {
        "operationId": "deleteBusinessProduct",
        "tags": [
          "Business App"
        ],
        "summary": "Delete a product from the connected WhatsApp Business App catalog",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "maxLength": 256
            },
            "required": true,
            "name": "productId",
            "in": "path",
            "description": "Identifier for the product.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |"
          }
        ],
        "responses": {
          "200": {
            "description": "Product deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__DeleteBusinessProductResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:write`"
      }
    },
    "/messaging/{session}/business/products": {
      "post": {
        "operationId": "createBusinessProduct",
        "tags": [
          "Business App"
        ],
        "summary": "Create a product in the connected WhatsApp Business App catalog",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__BusinessProductMutationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Product created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__CreateBusinessProductResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:write`"
      }
    },
    "/messaging/{session}/business/products/{productId}/visibility": {
      "patch": {
        "operationId": "setBusinessProductVisibility",
        "tags": [
          "Business App"
        ],
        "summary": "Hide or show a product in the connected WhatsApp Business App catalog",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "maxLength": 256
            },
            "required": true,
            "name": "productId",
            "in": "path",
            "description": "Identifier for the product.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__BusinessProductVisibilityRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Product visibility updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SetBusinessProductVisibilityResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:write`"
      }
    },
    "/messaging/{session}/business/products/{productId}/appeal": {
      "post": {
        "operationId": "appealBusinessProduct",
        "tags": [
          "Business App"
        ],
        "summary": "Request a review of a rejected WhatsApp Business App catalog product",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "maxLength": 256
            },
            "required": true,
            "name": "productId",
            "in": "path",
            "description": "Identifier for the product.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__BusinessCatalogAppealRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Product appeal submitted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__AppealBusinessProductResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:write`"
      }
    },
    "/messaging/{session}/business/collections": {
      "get": {
        "operationId": "getBusinessCollections",
        "tags": [
          "Business App"
        ],
        "summary": "Read WhatsApp Business App collections",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "maxLength": 256,
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "query",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          },
          {
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "required": false,
            "name": "after",
            "in": "query",
            "description": "Specifies after for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `2048` characters |"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 20
            },
            "required": false,
            "name": "collectionLimit",
            "in": "query",
            "description": "Specifies collection limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `20` (inclusive) |"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            },
            "required": false,
            "name": "itemLimit",
            "in": "query",
            "description": "Specifies item limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1024
            },
            "required": false,
            "name": "width",
            "in": "query",
            "description": "Width in pixels.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `1024` (inclusive) |"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1024
            },
            "required": false,
            "name": "height",
            "in": "query",
            "description": "Height in pixels.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `1024` (inclusive) |"
          }
        ],
        "responses": {
          "200": {
            "description": "Live collection page",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetBusinessCollectionsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "502": {
            "description": "Upstream WhatsApp request failed or its response could not be mapped",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "upstream_error",
                    "code": "upstream_failure",
                    "message": "The messaging provider could not complete the request.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#upstream-failure"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `business:read`"
      },
      "post": {
        "operationId": "createBusinessCollection",
        "tags": [
          "Business App"
        ],
        "summary": "Create a collection in the connected WhatsApp Business App catalog",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__BusinessCollectionCreateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Collection created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__CreateBusinessCollectionResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:write`"
      }
    },
    "/messaging/{session}/business/collections/{collectionId}": {
      "get": {
        "operationId": "getBusinessCollection",
        "tags": [
          "Business App"
        ],
        "summary": "Read a WhatsApp Business App collection",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "maxLength": 256
            },
            "required": true,
            "name": "collectionId",
            "in": "path",
            "description": "Identifier for the collection.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |"
          },
          {
            "schema": {
              "type": "string",
              "maxLength": 256,
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "query",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          },
          {
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "required": false,
            "name": "after",
            "in": "query",
            "description": "Specifies after for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `2048` characters |"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            },
            "required": false,
            "name": "limit",
            "in": "query",
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1024
            },
            "required": false,
            "name": "width",
            "in": "query",
            "description": "Width in pixels.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `1024` (inclusive) |"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1024
            },
            "required": false,
            "name": "height",
            "in": "query",
            "description": "Height in pixels.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `1024` (inclusive) |"
          }
        ],
        "responses": {
          "200": {
            "description": "Live collection",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetBusinessCollectionResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "502": {
            "description": "Upstream WhatsApp request failed or its response could not be mapped",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "upstream_error",
                    "code": "upstream_failure",
                    "message": "The messaging provider could not complete the request.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#upstream-failure"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `business:read`"
      },
      "patch": {
        "operationId": "updateBusinessCollection",
        "tags": [
          "Business App"
        ],
        "summary": "Update a collection and its product membership",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "maxLength": 256
            },
            "required": true,
            "name": "collectionId",
            "in": "path",
            "description": "Identifier for the collection.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__BusinessCollectionUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Collection updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__UpdateBusinessCollectionResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:write`"
      },
      "delete": {
        "operationId": "deleteBusinessCollection",
        "tags": [
          "Business App"
        ],
        "summary": "Delete a collection from the connected WhatsApp Business App catalog",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "maxLength": 256
            },
            "required": true,
            "name": "collectionId",
            "in": "path",
            "description": "Identifier for the collection.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |"
          }
        ],
        "responses": {
          "200": {
            "description": "Collection deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__DeleteBusinessCollectionResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:write`"
      }
    },
    "/messaging/{session}/business/collections/reorder": {
      "post": {
        "operationId": "reorderBusinessCollections",
        "tags": [
          "Business App"
        ],
        "summary": "Reorder connected WhatsApp Business App catalog collections",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__BusinessCollectionReorderRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Collections reordered",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__ReorderBusinessCollectionsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:write`"
      }
    },
    "/messaging/{session}/business/collections/{collectionId}/appeal": {
      "post": {
        "operationId": "appealBusinessCollection",
        "tags": [
          "Business App"
        ],
        "summary": "Request a review of a rejected WhatsApp Business App catalog collection",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "maxLength": 256
            },
            "required": true,
            "name": "collectionId",
            "in": "path",
            "description": "Identifier for the collection.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__BusinessCatalogAppealRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Collection appeal submitted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__AppealBusinessCollectionResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:write`"
      }
    },
    "/messaging/{session}/business/orders/{orderId}/lookup": {
      "post": {
        "operationId": "getBusinessOrder",
        "tags": [
          "Business App"
        ],
        "summary": "Read WhatsApp Business App order details",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "maxLength": 256
            },
            "required": true,
            "name": "orderId",
            "in": "path",
            "description": "Identifier for the order.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__BusinessOrderLookupRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Order details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetBusinessOrderResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "502": {
            "description": "Upstream WhatsApp request failed or its response could not be mapped",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "upstream_error",
                    "code": "upstream_failure",
                    "message": "The messaging provider could not complete the request.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#upstream-failure"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `business:read`"
      }
    },
    "/messaging/{session}/identities/resolve": {
      "get": {
        "operationId": "resolveIdentity",
        "tags": [
          "Identities"
        ],
        "summary": "Resolve a user alias to a stable user ID",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": false,
            "name": "phoneNumber",
            "in": "query",
            "description": "Phone number in international format."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": false,
            "name": "id",
            "in": "query",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 3,
              "maxLength": 35
            },
            "required": false,
            "name": "username",
            "in": "query",
            "description": "WhatsApp username when one is available.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `3` through `35` characters |"
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}$"
            },
            "required": false,
            "name": "usernameKey",
            "in": "query",
            "description": "Specifies username key for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\d{4}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Stable user ID and known aliases",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__ResolveIdentityResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `contacts:read`"
      }
    },
    "/messaging/{session}/users/{id}/security-code": {
      "get": {
        "operationId": "getUserSecurityCode",
        "tags": [
          "Users"
        ],
        "summary": "Get an identity verification code for a user",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Identity verification code and display QR",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__UserSecurityCodeResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `contacts:read`"
      }
    },
    "/messaging/{session}/channels": {
      "get": {
        "operationId": "listChannels",
        "tags": [
          "Channels"
        ],
        "summary": "List channels the session follows",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "responses": {
          "200": {
            "description": "Channel list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__ListChannelsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `channels:read`"
      },
      "post": {
        "operationId": "createChannel",
        "tags": [
          "Channels"
        ],
        "summary": "Create a new channel",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CreateChannelRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Channel created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__CreateChannelResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `channels:manage`"
      }
    },
    "/messaging/{session}/channels/{id}": {
      "get": {
        "operationId": "getChannel",
        "tags": [
          "Channels"
        ],
        "summary": "Get channel details",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Channel details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetChannelResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `channels:read`"
      },
      "delete": {
        "operationId": "deleteChannel",
        "tags": [
          "Channels"
        ],
        "summary": "Delete a channel",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Channel deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__DeleteChannelResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "502": {
            "description": "Upstream WhatsApp request failed or its response could not be mapped",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "upstream_error",
                    "code": "upstream_failure",
                    "message": "The messaging provider could not complete the request.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#upstream-failure"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `channels:manage`"
      }
    },
    "/messaging/{session}/channels/{id}/messages": {
      "get": {
        "operationId": "listChannelMessages",
        "tags": [
          "Channels"
        ],
        "summary": "List channel messages",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            },
            "required": false,
            "name": "count",
            "in": "query",
            "description": "Number of matching resources.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          },
          {
            "schema": {
              "type": "integer",
              "exclusiveMinimum": 0
            },
            "required": false,
            "name": "before",
            "in": "query",
            "description": "Specifies before for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | Greater than `0` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Channel messages",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__ListChannelMessagesResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `channels:read`"
      }
    },
    "/messaging/{session}/channels/{id}/message-updates": {
      "get": {
        "operationId": "listChannelMessageUpdates",
        "tags": [
          "Channels"
        ],
        "summary": "List channel view and reaction updates",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            },
            "required": false,
            "name": "count",
            "in": "query",
            "description": "Number of matching resources.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          },
          {
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "minimum": 0
            },
            "required": false,
            "name": "since",
            "in": "query",
            "description": "Specifies since for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          {
            "schema": {
              "type": "integer",
              "exclusiveMinimum": 0
            },
            "required": false,
            "name": "after",
            "in": "query",
            "description": "Specifies after for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | Greater than `0` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Channel message updates",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__ListChannelMessageUpdatesResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `channels:read`"
      }
    },
    "/messaging/{session}/channels/{id}/messages/{messageId}/viewed": {
      "post": {
        "operationId": "markChannelMessageViewed",
        "tags": [
          "Channels"
        ],
        "summary": "Mark a channel message as viewed",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "messageId",
            "in": "path",
            "description": "Polymorfa message ID. Use the Polymorfa message's `id` for actions and replies.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Message marked viewed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `channels:manage`"
      }
    },
    "/messaging/{session}/channels/{id}/messages/{messageId}/reaction": {
      "post": {
        "operationId": "reactToChannelMessage",
        "tags": [
          "Channels"
        ],
        "summary": "React to a channel message",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "messageId",
            "in": "path",
            "description": "Polymorfa message ID. Use the Polymorfa message's `id` for actions and replies.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Unique key, 1 to 255 bytes of UTF-8, that makes this write safe to retry for 24 hours. A retry with the same key, credential, `Polymorfa-Version`, and request never runs the write again: it returns `409 idempotency_completed` when the original succeeded, or the original server error, with `Idempotent-Replayed: true`. Reusing the key for a different request returns `409 idempotency_conflict`; a retry while the original is still running returns `409 idempotency_in_progress`, and a retry after an unrecorded outcome returns `409 idempotency_outcome_unknown`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__ChannelReactionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Reaction updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "The Idempotency-Key already succeeded (`idempotency_completed`), was used for a different request (`idempotency_conflict`), belongs to a request that is still running (`idempotency_in_progress`, with Retry-After), or belongs to a request whose outcome was not recorded (`idempotency_outcome_unknown`)",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying `idempotency_in_progress`.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "Idempotent-Replayed": {
                "description": "`true` when this response reports the recorded outcome of an earlier request with the same Idempotency-Key.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "true"
                  ]
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "idempotency_conflict",
                    "message": "This Idempotency-Key was already used with a different request. Use a new key for a different request.",
                    "param": null
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#idempotency-conflict"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `channels:manage`"
      }
    },
    "/messaging/{session}/channels/{id}/live-updates": {
      "post": {
        "operationId": "subscribeChannelLiveUpdates",
        "tags": [
          "Channels"
        ],
        "summary": "Subscribe temporarily to channel live updates",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Live-update subscription duration",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__ChannelLiveUpdatesResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `channels:read`"
      }
    },
    "/messaging/{session}/channels/{id}/follow": {
      "post": {
        "operationId": "followChannel",
        "tags": [
          "Channels"
        ],
        "summary": "Follow a channel",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Channel followed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `channels:manage`"
      }
    },
    "/messaging/{session}/channels/{id}/unfollow": {
      "post": {
        "operationId": "unfollowChannel",
        "tags": [
          "Channels"
        ],
        "summary": "Unfollow a channel",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Channel unfollowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `channels:manage`"
      }
    },
    "/messaging/{session}/channels/{id}/mute": {
      "post": {
        "operationId": "muteChannel",
        "tags": [
          "Channels"
        ],
        "summary": "Mute a channel",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Channel muted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `channels:manage`"
      }
    },
    "/messaging/{session}/channels/{id}/unmute": {
      "post": {
        "operationId": "unmuteChannel",
        "tags": [
          "Channels"
        ],
        "summary": "Unmute a channel",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Channel unmuted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `channels:manage`"
      }
    },
    "/messaging/{session}/presence": {
      "post": {
        "operationId": "setPresence",
        "tags": [
          "Presence"
        ],
        "summary": "Set the session's own presence (available / unavailable)",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__SetPresenceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Presence updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "202": {
            "description": "Accepted for asynchronous processing in response to `Prefer: respond-async`; the result is not included",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__AsyncAcceptedResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `presence:write`"
      },
      "get": {
        "operationId": "getPresence",
        "tags": [
          "Presence"
        ],
        "summary": "Get the session's own presence",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "responses": {
          "200": {
            "description": "Presence info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetPresenceResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `presence:read`"
      }
    },
    "/messaging/{session}/presence/{conversation}": {
      "get": {
        "operationId": "getChatPresence",
        "tags": [
          "Presence"
        ],
        "summary": "Get presence for a specific chat",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "conversation",
            "in": "path",
            "description": "Public conversation identifier or E.164 phone number."
          }
        ],
        "responses": {
          "200": {
            "description": "Chat presence",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetChatPresenceResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `presence:read`"
      }
    },
    "/messaging/{session}/presence/{conversation}/subscribe": {
      "post": {
        "operationId": "subscribePresence",
        "tags": [
          "Presence"
        ],
        "summary": "Subscribe to presence updates for a chat",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "conversation",
            "in": "path",
            "description": "Public conversation identifier or E.164 phone number."
          }
        ],
        "responses": {
          "200": {
            "description": "Subscribed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SubscribePresenceResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "202": {
            "description": "Accepted for asynchronous processing in response to `Prefer: respond-async`; the result is not included",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__AsyncAcceptedResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Observation limit exceeded, or the session is inside the suspension window that follows",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "rate_limit_error",
                    "code": "rate_limit_exceeded",
                    "message": "The request limit was reached. Follow Retry-After when supplied.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#rate-limit-exceeded"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `presence:observe`"
      }
    },
    "/messaging/projects/{projectId}/safe-mode": {
      "get": {
        "operationId": "getProjectSafeMode",
        "tags": [
          "Safe Mode"
        ],
        "summary": "Get a project's Safe Mode ceiling",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "path",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Project Safe Mode ceiling, and whether the plan includes BanSafe Lite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetProjectSafeModeResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `sessions:read`"
      },
      "put": {
        "operationId": "updateProjectSafeMode",
        "tags": [
          "Safe Mode"
        ],
        "summary": "Set a project's Safe Mode ceiling",
        "description": "**Required scope:** `sessions:manage`\n\nSets the most visible behaviour any number in this project may use. Presence and read receipts are visible to the people this number messages: turning them on makes the number appear online, exposes last-seen subject to the account's privacy settings, and puts blue ticks on incoming messages. Every axis is off by default and only this request changes it.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "path",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "presence": {
                    "type": "string",
                    "enum": [
                      "dark",
                      "online_while_sending",
                      "online_hours"
                    ],
                    "description": "Specifies presence for this schema.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `dark` | Dark. |\n| `online_while_sending` | Online while sending. |\n| `online_hours` | Online hours. |"
                  },
                  "typing": {
                    "type": "string",
                    "enum": [
                      "off",
                      "before_text",
                      "before_all"
                    ],
                    "description": "Specifies typing for this schema.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `before_text` | Before text. |\n| `before_all` | Before all. |"
                  },
                  "reads": {
                    "type": "string",
                    "enum": [
                      "off",
                      "replied_chats",
                      "all_inbound"
                    ],
                    "description": "Specifies reads for this schema.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `replied_chats` | Replied chats. |\n| `all_inbound` | All inbound. |"
                  },
                  "pacing": {
                    "type": "string",
                    "enum": [
                      "off",
                      "jittered",
                      "conversation"
                    ],
                    "description": "Specifies pacing for this schema.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `jittered` | Jittered. |\n| `conversation` | Conversation. |"
                  },
                  "onlineStart": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 23,
                    "description": "Specifies online start for this schema.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `23` (inclusive) |"
                  },
                  "onlineEnd": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 23,
                    "description": "Specifies online end for this schema.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `23` (inclusive) |"
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Project Safe Mode ceiling updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__UpdateProjectSafeModeResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "402": {
            "description": "Safe Mode is part of BanSafe Lite, which is not included on this number's plan",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "entitlement_required",
                    "message": "The account needs the required entitlement for this action.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#entitlement-required"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Stored, but a connected number did not confirm the policy; retry the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "service_unavailable",
                    "message": "A required service is unavailable. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#service-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/{session}/safe-mode": {
      "get": {
        "operationId": "getSessionSafeMode",
        "tags": [
          "Safe Mode"
        ],
        "summary": "Get a number's effective Safe Mode",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          }
        ],
        "responses": {
          "200": {
            "description": "Project ceiling, number override, the effective policy, and whether the plan includes BanSafe Lite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetSessionSafeModeResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `sessions:read`"
      },
      "put": {
        "operationId": "updateSessionSafeMode",
        "tags": [
          "Safe Mode"
        ],
        "summary": "Set a number's Safe Mode override",
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `sessions:manage`\n\nSets one number's Safe Mode. Each axis accepts `inherit` to follow the project ceiling. An override may only be equally or more conservative than the ceiling; a more visible value is refused with `safe_mode_exceeds_project_ceiling`.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "presence": {
                    "type": "string",
                    "enum": [
                      "inherit",
                      "dark",
                      "online_while_sending",
                      "online_hours"
                    ],
                    "description": "Specifies presence for this schema.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inherit` | Inherit. |\n| `dark` | Dark. |\n| `online_while_sending` | Online while sending. |\n| `online_hours` | Online hours. |"
                  },
                  "typing": {
                    "type": "string",
                    "enum": [
                      "inherit",
                      "off",
                      "before_text",
                      "before_all"
                    ],
                    "description": "Specifies typing for this schema.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inherit` | Inherit. |\n| `off` | Off. |\n| `before_text` | Before text. |\n| `before_all` | Before all. |"
                  },
                  "reads": {
                    "type": "string",
                    "enum": [
                      "inherit",
                      "off",
                      "replied_chats",
                      "all_inbound"
                    ],
                    "description": "Specifies reads for this schema.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inherit` | Inherit. |\n| `off` | Off. |\n| `replied_chats` | Replied chats. |\n| `all_inbound` | All inbound. |"
                  },
                  "pacing": {
                    "type": "string",
                    "enum": [
                      "inherit",
                      "off",
                      "jittered",
                      "conversation"
                    ],
                    "description": "Specifies pacing for this schema.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inherit` | Inherit. |\n| `off` | Off. |\n| `jittered` | Jittered. |\n| `conversation` | Conversation. |"
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Number Safe Mode override updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__UpdateSessionSafeModeResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "402": {
            "description": "Safe Mode is part of BanSafe Lite, which is not included on this number's plan",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "entitlement_required",
                    "message": "The account needs the required entitlement for this action.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#entitlement-required"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Stored, but a connected number did not confirm the policy; retry the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "service_unavailable",
                    "message": "A required service is unavailable. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#service-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/projects/{projectId}/warmup-plan": {
      "get": {
        "operationId": "getProjectWarmupPlan",
        "tags": [
          "Warm-up plan"
        ],
        "summary": "Get a project's warm-up plan",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "path",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Project warm-up plan, its projected curve, and whether the plan includes BanSafe Lite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetProjectWarmupPlanResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `sessions:read`"
      },
      "put": {
        "operationId": "updateProjectWarmupPlan",
        "tags": [
          "Warm-up plan"
        ],
        "summary": "Set a project's warm-up plan",
        "description": "**Required scope:** `sessions:manage`\n\nTurns the warm-up plan on or off for a project and sets how long the ramp takes and how many messages a number may send on its first day. While the plan is on, a send past a number's allowance is refused with `bansafe_daily_allowance_reached` and campaign recipients are deferred to the next reset.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "path",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "enabled": {
                    "type": "boolean",
                    "description": "Whether this feature is enabled."
                  },
                  "warmupDays": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 90,
                    "description": "Specifies warmup days for this schema.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `90` (inclusive) |"
                  },
                  "dailyStart": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 2000,
                    "description": "Specifies daily start for this schema.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `2000` (inclusive) |"
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Project warm-up plan updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__UpdateProjectWarmupPlanResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "402": {
            "description": "The warm-up plan is part of BanSafe Lite, which is not included on this project's plan",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "entitlement_required",
                    "message": "The account needs the required entitlement for this action.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#entitlement-required"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Stored, but a connected number did not confirm the plan; retry the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "service_unavailable",
                    "message": "A required service is unavailable. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#service-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/projects/{projectId}/health-policy": {
      "get": {
        "operationId": "getProjectHealthPolicy",
        "tags": [
          "BanSafe"
        ],
        "summary": "Get a project's health policy",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "path",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Project health threshold and configured actions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetProjectHealthPolicyResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `sessions:read`"
      },
      "put": {
        "operationId": "updateProjectHealthPolicy",
        "tags": [
          "BanSafe"
        ],
        "summary": "Set a project's health policy",
        "description": "**Required scope:** `sessions:manage`\n\nReplaces the project policy when version matches the stored version. The rule triggers only when an available health estimate is below threshold. Stopping disconnects a session while retaining its linked credentials; logging out requires relinking.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "path",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__UpdateProjectHealthPolicyInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Project health policy updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__UpdateProjectHealthPolicyResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "Version conflict or selected notification integration unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/projects/{projectId}/insurance-evidence": {
      "get": {
        "operationId": "getProjectInsuranceEvidence",
        "tags": [
          "Ban insurance"
        ],
        "summary": "Get ban insurance evidence setting",
        "description": "**Required scope:** `sessions:read`\n\nBan insurance evidence lets Polymorfa measure what the other devices linked to a number do with it: how many messages they send, to how many people, how fast, and in which hours. Only counts are kept, never messages, contacts, or device names. With it off, a claim can still be filed, but Polymorfa cannot say whether another device caused the ban and a person decides the claim.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "path",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "The project's ban insurance evidence setting",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetProjectInsuranceEvidenceResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      },
      "put": {
        "operationId": "updateProjectInsuranceEvidence",
        "tags": [
          "Ban insurance"
        ],
        "summary": "Set ban insurance evidence setting",
        "description": "**Required scope:** `sessions:manage`\n\nBan insurance evidence lets Polymorfa measure what the other devices linked to a number do with it: how many messages they send, to how many people, how fast, and in which hours. Only counts are kept, never messages, contacts, or device names. With it off, a claim can still be filed, but Polymorfa cannot say whether another device caused the ban and a person decides the claim.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "path",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "enabled": {
                    "type": "boolean",
                    "description": "Whether this feature is enabled."
                  }
                },
                "required": [
                  "enabled"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The project's ban insurance evidence setting was updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__UpdateProjectInsuranceEvidenceResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Stored, but a connected number did not confirm the change; retry the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "service_unavailable",
                    "message": "A required service is unavailable. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#service-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/projects/{projectId}/observation-policy": {
      "get": {
        "operationId": "getProjectObservationPolicy",
        "tags": [
          "Presence",
          "Labels",
          "Business App"
        ],
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "path",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Project observation ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetProjectObservationPolicyResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `presence:read`"
      }
    },
    "/messaging/{session}/observation-policy": {
      "get": {
        "operationId": "getSessionObservationPolicy",
        "tags": [
          "Presence",
          "Labels",
          "Business App"
        ],
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          }
        ],
        "responses": {
          "200": {
            "description": "Effective session observation policy",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetSessionObservationPolicyResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `presence:read`"
      }
    },
    "/messaging/{session}/profile": {
      "get": {
        "operationId": "getProfile",
        "tags": [
          "Profile"
        ],
        "summary": "Get the session's own profile",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "responses": {
          "200": {
            "description": "Profile info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetProfileResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:read`"
      }
    },
    "/messaging/{session}/profile/name": {
      "put": {
        "operationId": "setProfileName",
        "tags": [
          "Profile"
        ],
        "summary": "Set profile display name (push name)",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__SetProfileNameRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Name updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:write`"
      }
    },
    "/messaging/{session}/profile/status": {
      "put": {
        "operationId": "setProfileStatus",
        "tags": [
          "Profile"
        ],
        "summary": "Set profile status (about) text",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__SetProfileStatusRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Status updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:write`"
      }
    },
    "/messaging/{session}/profile/picture": {
      "put": {
        "operationId": "setProfilePicture",
        "tags": [
          "Profile"
        ],
        "summary": "Set profile picture",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__SetProfilePictureRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Picture updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:write`"
      },
      "delete": {
        "operationId": "deleteProfilePicture",
        "tags": [
          "Profile"
        ],
        "summary": "Remove the profile picture",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "responses": {
          "200": {
            "description": "Picture deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:write`"
      }
    },
    "/messaging/{session}/privacy": {
      "get": {
        "operationId": "getPrivacySettings",
        "tags": [
          "Privacy"
        ],
        "summary": "Get privacy settings",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "responses": {
          "200": {
            "description": "Privacy settings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PrivacySettingsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:read`"
      }
    },
    "/messaging/{session}/privacy/disappearing/default": {
      "put": {
        "operationId": "setDefaultDisappearingTimer",
        "tags": [
          "Privacy"
        ],
        "summary": "Set the default disappearing-message timer",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__DefaultDisappearingTimerRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Default disappearing-message timer updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:write`"
      }
    },
    "/messaging/{session}/privacy/{setting}": {
      "put": {
        "operationId": "setPrivacySetting",
        "tags": [
          "Privacy"
        ],
        "summary": "Update a privacy setting",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "groupadd",
                "last",
                "status",
                "profile",
                "readreceipts",
                "online",
                "calladd",
                "messages",
                "defense",
                "stickers"
              ]
            },
            "required": true,
            "name": "setting",
            "in": "path",
            "description": "Specifies setting for this path parameter.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `groupadd` | Groupadd. |\n| `last` | Last. |\n| `status` | Status. |\n| `profile` | Profile. |\n| `readreceipts` | Readreceipts. |\n| `online` | Online. |\n| `calladd` | Calladd. |\n| `messages` | Messages. |\n| `defense` | Defense. |\n| `stickers` | Stickers. |"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__SetPrivacySettingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated privacy settings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__UpdatedPrivacySettingsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `profile:write`"
      }
    },
    "/messaging/{session}/labels": {
      "get": {
        "operationId": "listLabels",
        "tags": [
          "Labels"
        ],
        "summary": "List labels defined for the session",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            },
            "required": false,
            "name": "includeObservation",
            "in": "query",
            "description": "Specifies include observation for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |\n| `false` | False. |"
          }
        ],
        "responses": {
          "200": {
            "description": "Label list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__ListLabelsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `labels:read`"
      },
      "post": {
        "operationId": "createLabel",
        "tags": [
          "Labels"
        ],
        "summary": "Create a label",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CreateLabelRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Label created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__CreateLabelResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `labels:manage`"
      }
    },
    "/messaging/{session}/labels/{labelId}": {
      "put": {
        "operationId": "updateLabel",
        "tags": [
          "Labels"
        ],
        "summary": "Update a label",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "labelId",
            "in": "path",
            "description": "Identifier for the label."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__UpdateLabelRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Label updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "The session has no authoritative view of its labels yet. Retry once a cached or project-retained snapshot is complete.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `labels:manage`"
      },
      "delete": {
        "operationId": "deleteLabel",
        "tags": [
          "Labels"
        ],
        "summary": "Delete a label",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "labelId",
            "in": "path",
            "description": "Identifier for the label."
          }
        ],
        "responses": {
          "200": {
            "description": "Label deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `labels:manage`"
      }
    },
    "/messaging/{session}/labels/chats/{conversation}": {
      "get": {
        "operationId": "getChatLabels",
        "tags": [
          "Labels"
        ],
        "summary": "Get labels attached to a chat",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "conversation",
            "in": "path",
            "description": "Public conversation identifier or E.164 phone number."
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            },
            "required": false,
            "name": "includeObservation",
            "in": "query",
            "description": "Specifies include observation for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |\n| `false` | False. |"
          }
        ],
        "responses": {
          "200": {
            "description": "Chat labels",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetChatLabelsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `labels:read`"
      },
      "put": {
        "operationId": "setChatLabels",
        "tags": [
          "Labels"
        ],
        "summary": "Replace the set of labels attached to a chat",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "conversation",
            "in": "path",
            "description": "Public conversation identifier or E.164 phone number."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__SetChatLabelsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Chat labels updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "The session has no authoritative view of its labels yet. Retry once a cached or project-retained snapshot is complete.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `labels:manage`"
      }
    },
    "/messaging/webhooks": {
      "get": {
        "operationId": "listWebhooks",
        "tags": [
          "Webhooks"
        ],
        "summary": "List webhooks for the tenant",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Webhook list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__ListWebhooksResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `webhooks:manage`"
      },
      "post": {
        "operationId": "createWebhook",
        "tags": [
          "Webhooks"
        ],
        "summary": "Register a new webhook",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CreateWebhookRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Webhook created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__CreateWebhookResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `webhooks:manage`"
      }
    },
    "/messaging/webhooks/{id}": {
      "get": {
        "operationId": "getWebhook",
        "tags": [
          "Webhooks"
        ],
        "summary": "Get a webhook by id",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Webhook details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetWebhookResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `webhooks:manage`"
      },
      "put": {
        "operationId": "updateWebhook",
        "tags": [
          "Webhooks"
        ],
        "summary": "Update a webhook",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__UpdateWebhookRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Webhook updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__UpdateWebhookResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `webhooks:manage`"
      },
      "delete": {
        "operationId": "deleteWebhook",
        "tags": [
          "Webhooks"
        ],
        "summary": "Delete a webhook",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Webhook deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `webhooks:manage`"
      }
    },
    "/messaging/media/{id}": {
      "get": {
        "operationId": "downloadMedia",
        "tags": [
          "Media"
        ],
        "summary": "Download media (binary stream or redirect to S3)",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Media binary stream",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "302": {
            "description": "Redirect to S3",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `media:read`"
      }
    },
    "/messaging/media/{id}/info": {
      "get": {
        "operationId": "getMediaInfo",
        "tags": [
          "Media"
        ],
        "summary": "Get media metadata",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Media info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetMediaInfoResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `media:read`"
      }
    },
    "/messaging/media/{id}/download-and-save": {
      "post": {
        "operationId": "downloadAndSaveMedia",
        "tags": [
          "Media"
        ],
        "summary": "Download media and persist it to the tenant's S3 bucket",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Persistence queued or already persisted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `media:manage`"
      }
    },
    "/messaging/projects/{projectSlug}/templates": {
      "get": {
        "operationId": "listProjectTemplates",
        "tags": [
          "Templates"
        ],
        "summary": "List project message templates",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          }
        ],
        "responses": {
          "200": {
            "description": "Templates",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__ListProjectTemplatesResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `templates:read`"
      },
      "post": {
        "operationId": "createProjectTemplate",
        "tags": [
          "Templates"
        ],
        "summary": "Create a project message template",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CreateMessageTemplateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__CreateProjectTemplateResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `templates:manage`"
      }
    },
    "/messaging/projects/{projectSlug}/templates/{id}": {
      "get": {
        "operationId": "getProjectTemplate",
        "tags": [
          "Templates"
        ],
        "summary": "Get a project message template",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Template",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetProjectTemplateResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `templates:read`"
      },
      "patch": {
        "operationId": "updateProjectTemplate",
        "tags": [
          "Templates"
        ],
        "summary": "Update a project message template",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__UpdateMessageTemplateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__UpdateProjectTemplateResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `templates:manage`"
      },
      "delete": {
        "operationId": "deleteProjectTemplate",
        "tags": [
          "Templates"
        ],
        "summary": "Delete a project message template",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `templates:manage`"
      }
    },
    "/messaging/projects/{projectSlug}/templates/{id}/preview": {
      "post": {
        "operationId": "previewProjectTemplate",
        "tags": [
          "Templates"
        ],
        "summary": "Render a template preview (idealized) or surface-specific output",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__PreviewMessageTemplateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Rendered",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PreviewProjectTemplateResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `templates:read`"
      }
    },
    "/messaging/projects/{projectSlug}/templates/{id}/submit": {
      "post": {
        "operationId": "submitProjectTemplateToMeta",
        "tags": [
          "Templates"
        ],
        "summary": "Submit a project template for approval",
        "description": "**Required scope:** `templates:manage`\n\nAccepts any number, so one integration handles both connection types; check `submission` in the response. A Cloud API number needs Meta approval: the template is rendered into a Meta create-template payload, submitted through that number, recorded as a per-number approval pointer (cloudLinks), and returned with `submission.status` PENDING. Read the Number's template catalog for Meta's review result. Any other number needs no review: nothing is sent to Meta and the template is returned with `submission.status` APPROVED and `submission.autoApproved` true. Incomplete or invalid definitions return 400 for every number; passing local validation does not guarantee Meta approval.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__SubmitMessageTemplateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Submitted to Meta (Cloud API number) or approved automatically (any other number)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SubmitProjectTemplateResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/projects/{projectSlug}/campaigns": {
      "get": {
        "operationId": "listCampaigns",
        "tags": [
          "Campaigns"
        ],
        "summary": "List campaigns",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__ListCampaignsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `campaigns:read`"
      },
      "post": {
        "operationId": "createCampaign",
        "tags": [
          "Campaigns"
        ],
        "summary": "Create a campaign",
        "description": "**Required scope:** `campaigns:manage`\n\nCreates a draft campaign on any plan. `senderConfig.sessionIds` may name numbers that are not yet on a plan that includes Campaigns; launch checks the selection. It is refused with `403 bansafe_org_suspended` while the team is suspended and `400` when `senderConfig.sessionIds` is malformed or a per-number cap is above its safety ceiling.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Unique key, 1 to 255 bytes of UTF-8, that makes this write safe to retry for 24 hours. A retry with the same key, credential, `Polymorfa-Version`, and request never runs the write again: it returns `409 idempotency_completed` when the original succeeded, or the original server error, with `Idempotent-Replayed: true`. Reusing the key for a different request returns `409 idempotency_conflict`; a retry while the original is still running returns `409 idempotency_in_progress`, and a retry after an unrecorded outcome returns `409 idempotency_outcome_unknown`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CreateCampaignRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__CreateCampaignResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "The Idempotency-Key already succeeded (`idempotency_completed`), was used for a different request (`idempotency_conflict`), belongs to a request that is still running (`idempotency_in_progress`, with Retry-After), or belongs to a request whose outcome was not recorded (`idempotency_outcome_unknown`)",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying `idempotency_in_progress`.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "Idempotent-Replayed": {
                "description": "`true` when this response reports the recorded outcome of an earlier request with the same Idempotency-Key.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "true"
                  ]
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "idempotency_conflict",
                    "message": "This Idempotency-Key was already used with a different request. Use a new key for a different request.",
                    "param": null
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#idempotency-conflict"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/projects/{projectSlug}/campaigns/{id}": {
      "get": {
        "operationId": "getCampaign",
        "tags": [
          "Campaigns"
        ],
        "summary": "Get a campaign",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetCampaignResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `campaigns:read`"
      },
      "patch": {
        "operationId": "updateProjectCampaign",
        "tags": [
          "Campaigns"
        ],
        "summary": "Update a campaign",
        "description": "**Required scope:** `campaigns:manage`\n\nUpdates the fields you send and leaves the rest unchanged. On an unlaunched draft, a new `senderConfig` passes the same checks as create, on any plan; launch checks the selection against live plans. Once the campaign has launched, including a scheduled launch that has not started, a new `senderConfig` must pass the launch checks and can answer `402 campaigns_not_entitled` or `400 invalid_parameter`. `recipientListId`, a different `scheduledAt`, and a changed `templateId` or `variableMapping` are accepted only while the campaign is an unlaunched draft; afterwards they answer `409`. Sending the stored value again is not a change. `trackedLinks` changes only while draft, including while waiting for a scheduled start; afterwards it answers `409`. A sender change to a draft that launches while the change is being saved also answers `409`. `sendWindow` changes only while draft or paused; a paused edit answers `409` while sends are in progress. A non-null `scheduledAt` must be integer Unix milliseconds within the JavaScript Date range.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__UpdateCampaignRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__UpdateCampaignResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "402": {
            "description": "`campaigns_not_entitled`: a new sender selection on a launched campaign names a number whose plan does not include Campaigns",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "campaigns_not_entitled",
                    "message": "This number’s plan does not include Campaigns.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#campaigns-not-entitled"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`state_conflict`: the campaign has launched and the audience or start time can no longer change, it launched while its sending numbers were being changed, its send window cannot change in the current state or while sends are in progress, or its tracked links cannot change after sending started",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "`service_unavailable`: number eligibility for a launched campaign's new sender selection could not be checked. Nothing was changed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "service_unavailable",
                    "message": "A required service is unavailable. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#service-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/projects/{projectSlug}/campaigns/{id}/analytics": {
      "get": {
        "operationId": "getCampaignAnalytics",
        "tags": [
          "Campaigns"
        ],
        "summary": "Campaign analytics (funnel, response timing, retries)",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__CampaignAnalyticsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `campaigns:read`"
      }
    },
    "/messaging/projects/{projectSlug}/campaigns/{id}/links": {
      "get": {
        "operationId": "getProjectCampaignLinks",
        "tags": [
          "Campaigns"
        ],
        "summary": "Get tracked link opens",
        "description": "**Required scope:** `campaigns:read`\n\nBeta. Opens of each tracked link, in the campaign's link order. An open is a request to the short link: a person, or an app or security scanner previewing the link. It is not proof of a click. Requires the campaign link tracking beta (`403 feature_unavailable` otherwise).",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetCampaignLinksResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/projects/{projectSlug}/campaigns/{id}/enrollments": {
      "post": {
        "operationId": "enrollProjectCampaignContact",
        "tags": [
          "Campaigns"
        ],
        "summary": "Enroll a contact in a drip",
        "description": "**Required scope:** `campaigns:manage`\n\nBeta. Adds one contact to a running or paused drip whose `drip.enrollment` is `continuous`. The contact starts at the first step, subject to the drip's send window, pacing and caps. Idempotent per phone: a phone already in the drip, including one that finished or left, returns its existing enrollment with `created: false`. An opted-out phone is enrolled as `skipped` and never sent. A team without the drip sequences beta gets `403 feature_unavailable`; a campaign that is not a drip, or a drip that is not accepting enrollments, answers `409 state_conflict`.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__EnrollCampaignContactRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__EnrollCampaignContactResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`state_conflict`: the campaign is not a drip, or the drip does not use continuous enrollment, has not started, or has ended",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/projects/{projectSlug}/campaigns/{id}/launch": {
      "post": {
        "operationId": "launchCampaign",
        "tags": [
          "Campaigns"
        ],
        "summary": "Launch a campaign",
        "description": "**Required scope:** `campaigns:manage`\n\nStarts a draft campaign. It begins sending at `scheduledAt`, or right away when no start time is set. Launch checks the saved sender selection against live plans: `402 campaigns_not_entitled` when a selected number is missing or its plan does not include Campaigns, or when an unselected campaign's project has no such number; `400 invalid_parameter` on `senderConfig.sessionIds` when a selected number is not connected or the selection mixes sending types; `400 campaign_throughput_capped` when a requested throughput is above its ceiling. Segment campaigns require a team API key; project tokens answer `403 permission_denied`, and unavailable audience betas answer `403 feature_unavailable`. An audience change during launch answers `409 state_conflict`. Segment evaluation that exceeds its time limit also answers `409 state_conflict`; simplify the rules and retry. A launched campaign whose segment was deleted remains launched and cannot be launched again (`409 state_conflict`). A message that references a `{{link:<key>}}` the campaign does not define, or tracked links on a campaign that would send from Official API numbers, answers `400 invalid_parameter` on `trackedLinks`; tracked links without the campaign link tracking beta answer `403 feature_unavailable`. A drip without a sendable composed message answers `400 invalid_parameter` on `messagesArray`. Saving a draft does not apply this check. The template must be complete and approved on every Cloud API number; every recipient needs a value or fallback for each variable unless `skipMissingVariables` is true. When the team requires approval above a recipient threshold and the launch would send to more recipients, it answers `409 campaign_approval_required`, sends nothing, and records a pending approval request for a team owner or admin. Launching again with the campaign unchanged returns the same request. A launch requested by an AI agent through the hosted MCP server is held the same way, whatever the threshold. The response returns the campaign as it was when the launch was accepted.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Unique key, 1 to 255 bytes of UTF-8, that makes this write safe to retry for 24 hours. A retry with the same key, credential, `Polymorfa-Version`, and request never runs the write again: it returns `409 idempotency_completed` when the original succeeded, or the original server error, with `Idempotent-Replayed: true`. Reusing the key for a different request returns `409 idempotency_conflict`; a retry while the original is still running returns `409 idempotency_in_progress`, and a retry after an unrecorded outcome returns `409 idempotency_outcome_unknown`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__LaunchCampaignRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__LaunchCampaignResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "`invalid_parameter` naming the field: an unconnected or mixed sender selection (`senderConfig.sessionIds`), an incomplete or authentication template (`templateId`), a composed attachment without a public URL, or a `{{link:<key>}}` the campaign does not define or tracked links on Official API numbers (`trackedLinks`). `campaign_throughput_capped` when a requested throughput is above its ceiling; `template_not_approved` when a Cloud API number has not approved the template.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "402": {
            "description": "`campaigns_not_entitled`: a selected number is missing or its plan does not include Campaigns, or the project has no number on such a plan. Drafts are saved on every plan.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "campaigns_not_entitled",
                    "message": "This number’s plan does not include Campaigns.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#campaigns-not-entitled"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "`permission_denied`: a project token attempted to launch a segment campaign; use a team API key or signed-in dashboard session. `feature_unavailable`: either audience beta is unavailable for a segment campaign, or the campaign has tracked links and its link tracking beta is unavailable. `bansafe_org_suspended` while the team is suspended.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`campaign_approval_required`: the launch is held for a team owner or admin and nothing was sent; the message names the approval request. `state_conflict`: the campaign is not a draft, is already launched and waiting for its start time, its sending numbers or audience changed during launch, or segment evaluation exceeded its time limit (simplify the rules and retry). A launched campaign whose segment was deleted cannot be launched again.. The Idempotency-Key already succeeded (`idempotency_completed`), was used for a different request (`idempotency_conflict`), belongs to a request that is still running (`idempotency_in_progress`, with Retry-After), or belongs to a request whose outcome was not recorded (`idempotency_outcome_unknown`)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "campaign_approval_required",
                    "message": "This request needs approval from a team owner or admin. Nothing was sent.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#campaign-approval-required"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying `idempotency_in_progress`.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "Idempotent-Replayed": {
                "description": "`true` when this response reports the recorded outcome of an earlier request with the same Idempotency-Key.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "true"
                  ]
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "422": {
            "description": "`campaign_variables_missing`: some recipients have no value and no fallback for a variable. The message names the variables and counts the recipients.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "campaign_variables_missing",
                    "message": "A recipient has no value and no fallback for a variable in the campaign content.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#campaign-variables-missing"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "`service_unavailable`: the selected numbers' plans could not be checked; retry",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "service_unavailable",
                    "message": "A required service is unavailable. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#service-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/projects/{projectSlug}/campaigns/{id}/pause": {
      "post": {
        "operationId": "pauseCampaign",
        "tags": [
          "Campaigns"
        ],
        "summary": "Pause a campaign",
        "description": "**Required scope:** `campaigns:manage`\n\nPauses a running campaign. Sends already in progress can still finish.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Unique key, 1 to 255 bytes of UTF-8, that makes this write safe to retry for 24 hours. A retry with the same key, credential, `Polymorfa-Version`, and request never runs the write again: it returns `409 idempotency_completed` when the original succeeded, or the original server error, with `Idempotent-Replayed: true`. Reusing the key for a different request returns `409 idempotency_conflict`; a retry while the original is still running returns `409 idempotency_in_progress`, and a retry after an unrecorded outcome returns `409 idempotency_outcome_unknown`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PauseCampaignResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`state_conflict`: The campaign is not running, or it has no active delivery run to pause. The Idempotency-Key already succeeded (`idempotency_completed`), was used for a different request (`idempotency_conflict`), belongs to a request that is still running (`idempotency_in_progress`, with Retry-After), or belongs to a request whose outcome was not recorded (`idempotency_outcome_unknown`)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying `idempotency_in_progress`.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "Idempotent-Replayed": {
                "description": "`true` when this response reports the recorded outcome of an earlier request with the same Idempotency-Key.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "true"
                  ]
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/projects/{projectSlug}/campaigns/{id}/resume": {
      "post": {
        "operationId": "resumeCampaign",
        "tags": [
          "Campaigns"
        ],
        "summary": "Resume a campaign",
        "description": "**Required scope:** `campaigns:manage`\n\nResumes a paused campaign. Its remaining recipients are sent after the same checks as before the pause.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Unique key, 1 to 255 bytes of UTF-8, that makes this write safe to retry for 24 hours. A retry with the same key, credential, `Polymorfa-Version`, and request never runs the write again: it returns `409 idempotency_completed` when the original succeeded, or the original server error, with `Idempotent-Replayed: true`. Reusing the key for a different request returns `409 idempotency_conflict`; a retry while the original is still running returns `409 idempotency_in_progress`, and a retry after an unrecorded outcome returns `409 idempotency_outcome_unknown`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__ResumeCampaignResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`state_conflict`: The campaign is not paused, or it has no active delivery run to resume. The Idempotency-Key already succeeded (`idempotency_completed`), was used for a different request (`idempotency_conflict`), belongs to a request that is still running (`idempotency_in_progress`, with Retry-After), or belongs to a request whose outcome was not recorded (`idempotency_outcome_unknown`)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying `idempotency_in_progress`.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "Idempotent-Replayed": {
                "description": "`true` when this response reports the recorded outcome of an earlier request with the same Idempotency-Key.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "true"
                  ]
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/projects/{projectSlug}/campaigns/{id}/stop": {
      "post": {
        "operationId": "stopCampaign",
        "tags": [
          "Campaigns"
        ],
        "summary": "Stop a campaign",
        "description": "**Required scope:** `campaigns:manage`\n\nCancels a draft, running, or paused campaign. Recipients not yet sent are not sent. The campaign moves to `cancelling` and then to `cancelled` once sends already in progress finish; a campaign with no active delivery run is `cancelled` immediately.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Unique key, 1 to 255 bytes of UTF-8, that makes this write safe to retry for 24 hours. A retry with the same key, credential, `Polymorfa-Version`, and request never runs the write again: it returns `409 idempotency_completed` when the original succeeded, or the original server error, with `Idempotent-Replayed: true`. Reusing the key for a different request returns `409 idempotency_conflict`; a retry while the original is still running returns `409 idempotency_in_progress`, and a retry after an unrecorded outcome returns `409 idempotency_outcome_unknown`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__StopCampaignResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`state_conflict`: The campaign is already finished or cancelled. The Idempotency-Key already succeeded (`idempotency_completed`), was used for a different request (`idempotency_conflict`), belongs to a request that is still running (`idempotency_in_progress`, with Retry-After), or belongs to a request whose outcome was not recorded (`idempotency_outcome_unknown`)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying `idempotency_in_progress`.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "Idempotent-Replayed": {
                "description": "`true` when this response reports the recorded outcome of an earlier request with the same Idempotency-Key.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "true"
                  ]
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/projects/{projectSlug}/campaigns/{id}/test-send": {
      "post": {
        "operationId": "testSendCampaign",
        "tags": [
          "Campaigns"
        ],
        "summary": "Send a test of a draft campaign",
        "description": "**Required scopes (all):** `campaigns:manage` · `campaigns:read`\n\nRequires campaigns:manage and campaigns:read because the test can use stored recipient samples. Sends one copy of a draft campaign's content to a seed recipient, through the same rendering, sending, and BanSafe checks as a launched campaign. The seed recipient must be a number connected to your team. A test is not a campaign recipient and is not counted in the campaign's statistics or webhooks. A team can send 20 tests an hour, and at most 5 an hour to one seed recipient.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Unique key, 1 to 255 bytes of UTF-8, that makes this write safe to retry for 24 hours. A retry with the same key, credential, `Polymorfa-Version`, and request never runs the write again: it returns `409 idempotency_completed` when the original succeeded, or the original server error, with `Idempotent-Replayed: true`. Reusing the key for a different request returns `409 idempotency_conflict`; a retry while the original is still running returns `409 idempotency_in_progress`, and a retry after an unrecorded outcome returns `409 idempotency_outcome_unknown`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CampaignTestSendRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__TestSendCampaignResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "402": {
            "description": "`campaigns_not_entitled`: the sending number's plan does not include Campaigns.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "campaigns_not_entitled",
                    "message": "This number’s plan does not include Campaigns.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#campaigns-not-entitled"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`state_conflict`: The campaign is not a draft or has A/B or weighted content alternatives, the sending number is a Hybrid Link number, or the seed recipient opted out. `bansafe_cold_held`: the seed recipient has never written to the sending number and the campaign holds first messages. The Idempotency-Key already succeeded (`idempotency_completed`), was used for a different request (`idempotency_conflict`), belongs to a request that is still running (`idempotency_in_progress`, with Retry-After), or belongs to a request whose outcome was not recorded (`idempotency_outcome_unknown`)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying `idempotency_in_progress`.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "Idempotent-Replayed": {
                "description": "`true` when this response reports the recorded outcome of an earlier request with the same Idempotency-Key.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "true"
                  ]
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "422": {
            "description": "`campaign_variables_missing`: the selected sample and explicit values cannot fill a variable in the content.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "campaign_variables_missing",
                    "message": "A recipient has no value and no fallback for a variable in the campaign content.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#campaign-variables-missing"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "The team or seed recipient reached its test-send limit (`rate_limit_exceeded`), or BanSafe is pacing the sending number. Follow `Retry-After`.",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "rate_limit_error",
                    "code": "rate_limit_exceeded",
                    "message": "The request limit was reached. Follow Retry-After when supplied.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#rate-limit-exceeded"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "502": {
            "description": "`upstream_failure`: the send path reported that the test could not be sent.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "upstream_error",
                    "code": "upstream_failure",
                    "message": "The messaging provider could not complete the request.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#upstream-failure"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "The test was not sent: the sending number is not connected (`session_not_ready`), test sends or the send path are unavailable (`service_unavailable`, `command_dispatch_failed`), or the sending number's allowance could not be checked (`bansafe_accounting_unavailable`). Retry later.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "service_unavailable",
                    "message": "A required service is unavailable. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#service-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "504": {
            "description": "`result_unknown`: the outcome was not received in time. The test may still arrive.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "result_unknown",
                    "message": "The result was not obtained before the deadline. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#result-unknown"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/projects/{projectSlug}/campaigns/{id}/reschedule": {
      "post": {
        "operationId": "rescheduleCampaign",
        "tags": [
          "Campaigns"
        ],
        "summary": "Reschedule a campaign",
        "description": "**Required scope:** `campaigns:manage`\n\nMoves the start of a launched campaign that is still waiting for it. Set `scheduledAt` to a later or earlier time, or to `null` to start now. The response returns the campaign with its new `scheduledAt`. Sending the current start time again changes nothing. A campaign that has started, finished, is being stopped, or was never launched is refused with `409`; launch a draft with `scheduledAt` instead.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Unique key, 1 to 255 bytes of UTF-8, that makes this write safe to retry for 24 hours. A retry with the same key, credential, `Polymorfa-Version`, and request never runs the write again: it returns `409 idempotency_completed` when the original succeeded, or the original server error, with `Idempotent-Replayed: true`. Reusing the key for a different request returns `409 idempotency_conflict`; a retry while the original is still running returns `409 idempotency_in_progress`, and a retry after an unrecorded outcome returns `409 idempotency_outcome_unknown`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__RescheduleCampaignRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__RescheduleCampaignResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`state_conflict`: The campaign has already started, is finished or being stopped, or was never launched. The Idempotency-Key already succeeded (`idempotency_completed`), was used for a different request (`idempotency_conflict`), belongs to a request that is still running (`idempotency_in_progress`, with Retry-After), or belongs to a request whose outcome was not recorded (`idempotency_outcome_unknown`)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying `idempotency_in_progress`.",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "Idempotent-Replayed": {
                "description": "`true` when this response reports the recorded outcome of an earlier request with the same Idempotency-Key.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "true"
                  ]
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/projects/{projectSlug}/campaigns/{id}/requeue": {
      "post": {
        "operationId": "requeueCampaign",
        "tags": [
          "Campaigns"
        ],
        "summary": "Re-queue failed recipients",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__RequeueCampaignRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__RequeueCampaignResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `campaigns:manage`"
      }
    },
    "/messaging/projects/{projectSlug}/campaign-reply-flows": {
      "post": {
        "operationId": "createCampaignReplyFlow",
        "tags": [
          "Campaigns"
        ],
        "summary": "Create a reply flow revision",
        "description": "**Required scope:** `campaigns:manage`\n\nCreates an immutable reply flow revision: the steps a campaign runs when a recipient replies. Each step can send a text, reply buttons, a list, or a Flow form, and branches on the button or list row chosen, an exact keyword, or a Flow form submission. Beta.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CreateCampaignReplyFlowRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__CreateCampaignReplyFlowResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "`missing_scope`, or `feature_unavailable` when campaign reply flows are not enabled for the team.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "missing_scope",
                    "message": "The credential lacks a required API scope.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#missing-scope"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`state_conflict`: this flow key and revision already exist.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/projects/{projectSlug}/campaign-reply-flows/{id}": {
      "get": {
        "operationId": "getCampaignReplyFlow",
        "tags": [
          "Campaigns"
        ],
        "summary": "Get a reply flow revision",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__GetCampaignReplyFlowResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "`missing_scope`, or `feature_unavailable` when campaign reply flows are not enabled for the team.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "missing_scope",
                    "message": "The credential lacks a required API scope.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#missing-scope"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `campaigns:read`"
      }
    },
    "/messaging/projects/{projectSlug}/campaigns/{id}/reply-flow": {
      "put": {
        "operationId": "setCampaignReplyFlow",
        "tags": [
          "Campaigns"
        ],
        "summary": "Set a campaign's reply flow",
        "description": "**Required scope:** `campaigns:manage`\n\nAttaches a reply flow revision to a draft or scheduled campaign, or detaches it with `null`. The flow starts for each recipient once their message is sent.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__SetCampaignReplyFlowRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__SetCampaignReplyFlowResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "`missing_scope`, or `feature_unavailable` when campaign reply flows are not enabled for the team.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "missing_scope",
                    "message": "The credential lacks a required API scope.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#missing-scope"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`state_conflict`: the campaign has already launched.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/projects/{projectSlug}/campaigns/{id}/recipients": {
      "get": {
        "operationId": "listProjectCampaignRecipients",
        "tags": [
          "Campaigns"
        ],
        "summary": "List campaign recipients",
        "description": "**Required scope:** `campaigns:read`\n\nLists a campaign's recipients in queue order with cursor pagination. Filter by `status`, by `reason`, or both: for example `status=skipped&reason=opted_out` lists recipients skipped because they opted out. `failureReason` gives the stable reason a recipient was not sent.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "queued",
                "sending",
                "sent",
                "delivered",
                "read",
                "failed",
                "skipped"
              ]
            },
            "required": false,
            "name": "status",
            "in": "query",
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `queued` | Queued. |\n| `sending` | Sending. |\n| `sent` | Sent. |\n| `delivered` | Delivered. |\n| `read` | Read. |\n| `failed` | Failed. |\n| `skipped` | Skipped. |"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "opted_out",
                "cold_held",
                "campaign_cancelled",
                "invalid_recipient",
                "session_not_connected",
                "ack_timeout",
                "blocked_by_safety",
                "send_failed",
                "missing_variable",
                "frequency_cap",
                "other"
              ],
              "description": "Only recipients whose `failureReason` is this code."
            },
            "required": false,
            "name": "reason",
            "in": "query",
            "description": "Reason for the reported state or outcome.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `opted_out` | Opted out. |\n| `cold_held` | Cold held. |\n| `campaign_cancelled` | Campaign cancelled. |\n| `invalid_recipient` | Invalid recipient. |\n| `session_not_connected` | Session not connected. |\n| `ack_timeout` | Ack timeout. |\n| `blocked_by_safety` | Blocked by safety. |\n| `send_failed` | Send failed. |\n| `missing_variable` | Missing variable. |\n| `frequency_cap` | Frequency cap. |\n| `other` | Other. |"
          },
          {
            "schema": {
              "type": "string",
              "maxLength": 256
            },
            "required": false,
            "name": "cursor",
            "in": "query",
            "description": "Specifies cursor for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "description": "Page size, default 25."
            },
            "required": false,
            "name": "limit",
            "in": "query",
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__ListCampaignRecipientsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      },
      "post": {
        "operationId": "addProjectCampaignRecipients",
        "tags": [
          "Campaigns"
        ],
        "summary": "Add recipients to a draft campaign",
        "description": "**Required scope:** `campaigns:manage`\n\nAdds up to 1,000 recipients to a campaign that has not started sending. A phone already on the campaign is skipped. Invalid entries are reported and not added.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "required": false,
            "description": "Optional key, 1 to 255 bytes of UTF-8, that makes this request safe to retry for 24 hours. A retry with the same key, credential, `Polymorfa-Version` and request is not applied again: it returns `200` with `Idempotent-Replayed: true` and the replay result described for this operation. Reusing the key for a different request returns `409 idempotency_conflict`. A retry sent while the original is still running waits for it and then returns its result. A request that failed left no record, so retrying it with the same key runs it again. Access to the resource is checked again on every retry. A replay returns the original counts, even after the campaign has launched.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |",
            "name": "Idempotency-Key",
            "in": "header"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__AddCampaignRecipientsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "Idempotent-Replayed": {
                "description": "`true` when this response replays the result of an earlier request with the same Idempotency-Key.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "true"
                  ]
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__AddCampaignRecipientsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "The campaign has started sending and no longer accepts recipients, or the Idempotency-Key was already used for a different request (`idempotency_conflict`)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/projects/{projectSlug}/campaigns/{id}/recipients/export": {
      "get": {
        "operationId": "exportProjectCampaignRecipients",
        "tags": [
          "Campaigns"
        ],
        "summary": "Export campaign recipients",
        "description": "**Required scope:** `campaigns:read`\n\nReturns recipients as CSV in queue order. Unfiltered exports page up to 1,000 recipients per request. Each page starts with a header row. When more recipients match, the `Polymorfa-Next-Cursor` response header carries the cursor for the next page; it is absent on the last page. Each page is read when it is requested, so a recipient appears once, with the outcome it had when its page was read. A filtered export is one atomic page of up to 1,000 recipients; larger filtered results return 409, so changing statuses cannot silently omit matches between pages. The export contains outcomes and `failureReason` codes only, never message content or template variables.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "projectSlug",
            "in": "path",
            "description": "Specifies project slug for this path parameter."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "queued",
                "sending",
                "sent",
                "delivered",
                "read",
                "failed",
                "skipped"
              ]
            },
            "required": false,
            "name": "status",
            "in": "query",
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `queued` | Queued. |\n| `sending` | Sending. |\n| `sent` | Sent. |\n| `delivered` | Delivered. |\n| `read` | Read. |\n| `failed` | Failed. |\n| `skipped` | Skipped. |"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "opted_out",
                "cold_held",
                "campaign_cancelled",
                "invalid_recipient",
                "session_not_connected",
                "ack_timeout",
                "blocked_by_safety",
                "send_failed",
                "missing_variable",
                "frequency_cap",
                "other"
              ],
              "description": "Only recipients whose `failureReason` is this code."
            },
            "required": false,
            "name": "reason",
            "in": "query",
            "description": "Reason for the reported state or outcome.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `opted_out` | Opted out. |\n| `cold_held` | Cold held. |\n| `campaign_cancelled` | Campaign cancelled. |\n| `invalid_recipient` | Invalid recipient. |\n| `session_not_connected` | Session not connected. |\n| `ack_timeout` | Ack timeout. |\n| `blocked_by_safety` | Blocked by safety. |\n| `send_failed` | Send failed. |\n| `missing_variable` | Missing variable. |\n| `frequency_cap` | Frequency cap. |\n| `other` | Other. |"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256,
              "description": "The `Polymorfa-Next-Cursor` value from the previous unfiltered page. Filtered exports cannot be paged."
            },
            "required": false,
            "name": "cursor",
            "in": "query",
            "description": "Specifies cursor for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1000,
              "description": "Recipients per unfiltered page, up to 1,000. Filtered exports require 1,000. Default 1,000."
            },
            "required": false,
            "name": "limit",
            "in": "query",
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `1000` (inclusive) |"
          }
        ],
        "responses": {
          "200": {
            "description": "One page of recipients.",
            "headers": {
              "Polymorfa-Next-Cursor": {
                "schema": {
                  "type": "string",
                  "description": "Cursor for the next page. Absent on the last page."
                },
                "required": false
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string",
                  "description": "Header row, then one row per recipient. Columns: recipientId, phone, status, failureReason, attempts, variantKey, queuedAt, sentAt, deliveredAt, readAt, failedAt, respondedAt, followUpStatus, followUpAnchor, followUpDueAt, followUpExpiresAt, followUpSentAt, followUpReadAt, followUpRepliedAt, followUpReason, followUpCommandId. Times are ISO 8601 in UTC. Empty fields are null. Text that begins with =, +, -, @, tab or carriage return is prefixed with an apostrophe, including phone numbers in international format. Machine readers should remove that leading apostrophe from phone cells."
                }
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "More than 1,000 recipients match the filter",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/quicklinks": {
      "post": {
        "operationId": "createQuickLink",
        "tags": [
          "QuickLink"
        ],
        "summary": "Create a QuickLink",
        "description": "**Required scope:** `quicklink:manage`\n\nCreates a persistent hosted link that connects one WhatsApp number to a new session in the project.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CreateQuickLinkRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "QuickLink created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__QuickLinkResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/quicklinks/{id}": {
      "get": {
        "operationId": "getQuickLink",
        "tags": [
          "QuickLink"
        ],
        "summary": "Read QuickLink status",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Current QuickLink status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__QuickLinkStatusResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `quicklink:manage`"
      },
      "delete": {
        "operationId": "cancelQuickLink",
        "tags": [
          "QuickLink"
        ],
        "summary": "Cancel a QuickLink",
        "description": "**Required scope:** `quicklink:manage`\n\nCancels pending onboarding. Initial Number cleanup is accepted asynchronously and completes only after runtime teardown. Supplementary and reauthorization links cancel only their pending attempts; the existing Number remains. Accepted provider work must finish before cancellation.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path",
            "description": "Identifier for this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Cancelled",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "enum": [
                        true
                      ],
                      "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
                    },
                    "message": {
                      "type": "string",
                      "description": "Human-readable message associated with this result."
                    }
                  },
                  "required": [
                    "success",
                    "message"
                  ]
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "202": {
            "description": "QuickLink invalidated; Number cleanup pending",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "enum": [
                        true
                      ],
                      "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
                    },
                    "message": {
                      "type": "string",
                      "description": "Human-readable message associated with this result."
                    }
                  },
                  "required": [
                    "success",
                    "message"
                  ]
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/{session}/cloud-credentials": {
      "get": {
        "operationId": "getCloudCredentialHealth",
        "tags": [
          "Sessions"
        ],
        "summary": "Read Meta Cloud API credential health",
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `sessions:read`\n\nReturns the latest recurring validation of the Number's Meta Cloud API credentials: token validity, required permissions, phone registration and webhook subscription.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          }
        ],
        "responses": {
          "200": {
            "description": "Credential health",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__CloudCredentialHealthResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/messaging/{session}/cloud-credentials/reauthorize": {
      "post": {
        "operationId": "reauthorizeCloudCredentials",
        "tags": [
          "Sessions"
        ],
        "summary": "Start guided Meta Cloud API reauthorization",
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `quicklink:manage`\n\nRequires a project token with `quicklink:manage`. Creates a QuickLink with purpose `reauthorization` that renews the Number's Meta authorization through Embedded Signup. The link is bound to the same Number and phone number and always uses the Meta Cloud API. The Number must be stopped or disconnected; this request never stops it. Cancelling the link before Meta work starts keeps the Number.",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          }
        ],
        "responses": {
          "201": {
            "description": "Reauthorization link created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__CloudReauthorizationResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "402": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "501": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/quicklink/{token}/phone": {
      "post": {
        "operationId": "confirmQuickLinkPhone",
        "tags": [
          "QuickLink"
        ],
        "security": [],
        "summary": "Confirm the number for this invitation",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "description": "Opaque QuickLink token from the hosted URL."
            },
            "required": true,
            "name": "token",
            "in": "path",
            "description": "Opaque token required by the target operation."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "phone": {
                    "type": "string",
                    "maxLength": 32,
                    "description": "Phone number in international format.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `32` characters |"
                  },
                  "noNumber": {
                    "type": "boolean",
                    "enum": [
                      true
                    ],
                    "description": "Whether no number.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
                  },
                  "whatsappPhone": {
                    "type": "string",
                    "maxLength": 32,
                    "description": "Specifies whatsapp phone for this schema.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `32` characters |"
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Phone confirmed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "confirmed": {
                          "type": "boolean",
                          "description": "Whether confirmed."
                        }
                      },
                      "required": [
                        "confirmed"
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "403": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "404": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "409": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "422": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "429": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "500": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "503": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          }
        }
      }
    },
    "/quicklink/{token}/phone/reset": {
      "post": {
        "operationId": "resetQuickLinkPhone",
        "tags": [
          "QuickLink"
        ],
        "security": [],
        "summary": "Return to phone entry before connecting",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "description": "Opaque QuickLink token from the hosted URL."
            },
            "required": true,
            "name": "token",
            "in": "path",
            "description": "Opaque token required by the target operation."
          }
        ],
        "responses": {
          "200": {
            "description": "Phone entry restored",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "confirmed": {
                          "type": "boolean",
                          "description": "Whether confirmed."
                        }
                      },
                      "required": [
                        "confirmed"
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "403": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "404": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "409": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "422": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "429": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "500": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "503": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          }
        }
      }
    },
    "/quicklink/{token}/connection": {
      "post": {
        "operationId": "selectQuickLinkConnection",
        "tags": [
          "QuickLink"
        ],
        "security": [],
        "summary": "Select an allowed connection type",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "description": "Opaque QuickLink token from the hosted URL."
            },
            "required": true,
            "name": "token",
            "in": "path",
            "description": "Opaque token required by the target operation."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "connection": {
                    "type": "string",
                    "enum": [
                      "cloud",
                      "linked"
                    ],
                    "description": "Specifies connection for this schema.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `cloud` | Cloud. |\n| `linked` | Linked. |"
                  }
                },
                "required": [
                  "connection"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Selected",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "connection": {
                          "type": "string",
                          "enum": [
                            "cloud",
                            "linked"
                          ],
                          "description": "Specifies connection for this data.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `cloud` | Cloud. |\n| `linked` | Linked. |"
                        }
                      },
                      "required": [
                        "connection"
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "403": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "404": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "409": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "422": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "429": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "500": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "503": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          }
        }
      }
    },
    "/quicklink/{token}/cloud": {
      "post": {
        "operationId": "completeQuickLinkCloudSignup",
        "tags": [
          "QuickLink"
        ],
        "security": [],
        "summary": "Advance Cloud onboarding",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "description": "Opaque QuickLink token from the hosted URL."
            },
            "required": true,
            "name": "token",
            "in": "path",
            "description": "Opaque token required by the target operation."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "result": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/messaging__EmbeddedSignupResult"
                      }
                    ],
                    "description": "Specifies result for this schema."
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Onboarding progress",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "stage": {
                          "type": "string",
                          "description": "Specifies stage for this data."
                        }
                      },
                      "required": [
                        "stage"
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "403": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "404": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "409": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "422": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "429": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "500": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "503": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          }
        }
      }
    },
    "/quicklink/{token}/history": {
      "post": {
        "operationId": "chooseQuickLinkHistory",
        "tags": [
          "QuickLink"
        ],
        "security": [],
        "summary": "Choose history sharing before connecting",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "description": "Opaque QuickLink token from the hosted URL."
            },
            "required": true,
            "name": "token",
            "in": "path",
            "description": "Opaque token required by the target operation."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "historySync": {
                    "type": "boolean",
                    "description": "History synchronization behavior for newly connected sessions."
                  }
                },
                "required": [
                  "historySync"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "History choice recorded",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/messaging__QuickLinkState"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "403": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "404": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "409": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "422": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "429": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "500": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "503": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          }
        }
      }
    },
    "/quicklink/{token}/testing": {
      "patch": {
        "operationId": "customizeQuickLinkTesting",
        "tags": [
          "QuickLink"
        ],
        "security": [],
        "summary": "Customize a simulated QuickLink account",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "description": "Opaque QuickLink token from the hosted URL."
            },
            "required": true,
            "name": "token",
            "in": "path",
            "description": "Opaque token required by the target operation."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "profile": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 128,
                        "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
                      },
                      "status": {
                        "type": "string",
                        "maxLength": 139,
                        "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `139` characters |"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Structured profile values for this schema."
                  },
                  "accountType": {
                    "type": "string",
                    "enum": [
                      "personal",
                      "business"
                    ],
                    "description": "Category assigned to account.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `personal` | Personal. |\n| `business` | Business. |"
                  },
                  "replyBehavior": {
                    "type": "string",
                    "enum": [
                      "off",
                      "echo"
                    ],
                    "description": "Specifies reply behavior for this schema.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `echo` | Echo. |"
                  },
                  "failureScenario": {
                    "type": "string",
                    "enum": [
                      "none",
                      "reject-send"
                    ],
                    "description": "Specifies failure scenario for this schema.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `reject-send` | Reject send. |"
                  },
                  "historyFixtureId": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Identifier for the history fixture.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Test configuration updated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/messaging__QuickLinkState"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "403": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "404": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "409": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "422": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "429": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "500": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "503": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          }
        }
      }
    },
    "/quicklink/{token}/testing/start": {
      "post": {
        "operationId": "startQuickLinkTesting",
        "tags": [
          "QuickLink"
        ],
        "security": [],
        "summary": "Start the simulated account reserved by a QuickLink",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "description": "Opaque QuickLink token from the hosted URL."
            },
            "required": true,
            "name": "token",
            "in": "path",
            "description": "Opaque token required by the target operation."
          }
        ],
        "responses": {
          "200": {
            "description": "Current test connection state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/messaging__QuickLinkState"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "403": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "404": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "409": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "422": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "429": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "500": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "503": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          }
        }
      }
    },
    "/quicklink/{token}": {
      "get": {
        "operationId": "getQuickLinkState",
        "tags": [
          "QuickLink"
        ],
        "security": [],
        "summary": "Read QuickLink state",
        "description": "Returns the hosted page state for a QuickLink. Public; the token in the URL is the credential. Starts linked-device pairing after an allowed connection type has been selected.",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "description": "Opaque QuickLink token from the hosted URL."
            },
            "required": true,
            "name": "token",
            "in": "path",
            "description": "Opaque token required by the target operation."
          }
        ],
        "responses": {
          "200": {
            "description": "Current QuickLink state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/messaging__QuickLinkState"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "403": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "404": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "409": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "422": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "429": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "500": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "503": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          }
        }
      }
    },
    "/quicklink/{token}/logo": {
      "get": {
        "operationId": "getQuickLinkLogo",
        "tags": [
          "QuickLink"
        ],
        "security": [],
        "summary": "Read the QuickLink page logo",
        "description": "Returns the saved logo image for the page. Public; the token in the URL is the credential.",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "description": "Opaque QuickLink token from the hosted URL."
            },
            "required": true,
            "name": "token",
            "in": "path",
            "description": "Opaque token required by the target operation."
          }
        ],
        "responses": {
          "200": {
            "description": "Logo image",
            "content": {
              "image/png": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "403": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "404": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "409": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "422": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "429": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "500": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "503": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          }
        }
      }
    },
    "/quicklink/{token}/code": {
      "post": {
        "operationId": "requestQuickLinkCode",
        "tags": [
          "QuickLink"
        ],
        "security": [],
        "summary": "Request a QuickLink pairing code",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "description": "Opaque QuickLink token from the hosted URL."
            },
            "required": true,
            "name": "token",
            "in": "path",
            "description": "Opaque token required by the target operation."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__QuickLinkCodeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Pairing code issued",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Stable machine-readable code for this result."
                        },
                        "phone": {
                          "type": "string",
                          "description": "Phone number in international format."
                        }
                      },
                      "required": [
                        "code",
                        "phone"
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "402": {
            "description": "The team cannot fund pairing",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "403": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "404": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "409": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "422": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "429": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "500": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "503": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          }
        }
      }
    },
    "/quicklink/{token}/confirm": {
      "post": {
        "operationId": "confirmQuickLink",
        "tags": [
          "QuickLink"
        ],
        "security": [],
        "summary": "Confirm a linked QuickLink",
        "description": "Records consent, applies the chat-history choice, assigns Customer ownership when applicable, and returns the redirect target.",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "description": "Opaque QuickLink token from the hosted URL."
            },
            "required": true,
            "name": "token",
            "in": "path",
            "description": "Opaque token required by the target operation."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__QuickLinkConfirmRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Connected",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "enum": [
                            "connected"
                          ],
                          "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `connected` | Connected. |"
                        },
                        "phone": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Phone number in international format.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
                        },
                        "historySync": {
                          "type": "boolean",
                          "description": "History synchronization behavior for newly connected sessions."
                        },
                        "redirectUrl": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "URL for the redirect.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
                        }
                      },
                      "required": [
                        "status",
                        "phone",
                        "historySync",
                        "redirectUrl"
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "403": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "404": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "409": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "422": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "429": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "500": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "503": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          }
        }
      }
    },
    "/quicklink/{token}/cancel": {
      "post": {
        "operationId": "cancelQuickLinkByToken",
        "tags": [
          "QuickLink"
        ],
        "security": [],
        "summary": "Cancel a QuickLink from the hosted page",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "description": "Opaque QuickLink token from the hosted URL."
            },
            "required": true,
            "name": "token",
            "in": "path",
            "description": "Opaque token required by the target operation."
          }
        ],
        "responses": {
          "200": {
            "description": "Cancelled",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "enum": [
                            "cancelled"
                          ],
                          "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `cancelled` | Cancelled. |"
                        },
                        "redirectUrl": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "URL for the redirect.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
                        }
                      },
                      "required": [
                        "status",
                        "redirectUrl"
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "202": {
            "description": "QuickLink invalidated; Number cleanup pending",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "enum": [
                            "cancelled"
                          ],
                          "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `cancelled` | Cancelled. |"
                        },
                        "redirectUrl": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "URL for the redirect.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
                        }
                      },
                      "required": [
                        "status",
                        "redirectUrl"
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "403": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "404": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "409": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "422": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "429": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "500": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          },
          "503": {
            "description": "QuickLink request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicQuickLinkError"
                }
              }
            }
          }
        }
      }
    },
    "/messaging/cloud-api/embedded-signup": {
      "post": {
        "operationId": "embeddedSignup",
        "tags": [
          "Cloud API"
        ],
        "summary": "Advance Meta Cloud API setup for an issued QuickLink",
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__EmbeddedSignupRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Onboarding progress",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "enum": [
                        true
                      ],
                      "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "stage": {
                          "type": "string",
                          "description": "Specifies stage for this data."
                        }
                      },
                      "required": [
                        "stage"
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "success",
                    "data"
                  ]
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "410": {
            "description": "Direct session signup was retired; create a QuickLink first",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_gone",
                    "message": "The requested retained resource has expired or was removed.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-gone"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `quicklink:manage`"
      }
    },
    "/messaging/testing/{projectId}/history-fixtures": {
      "post": {
        "operationId": "createTestingHistoryFixture",
        "tags": [
          "Testing"
        ],
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "path",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "messages": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 128,
                          "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
                        },
                        "senderPhone": {
                          "type": "string",
                          "pattern": "^\\+[1-9][0-9]{1,14}$",
                          "description": "Specifies sender phone for this message.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\+[1-9][0-9]{1,14}$` |"
                        },
                        "text": {
                          "type": "string",
                          "maxLength": 4096,
                          "description": "Text content carried by this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `4096` characters |"
                        },
                        "timestamp": {
                          "type": "integer",
                          "exclusiveMinimum": 0,
                          "description": "Unix timestamp in seconds associated with this event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | Greater than `0` |"
                        },
                        "fromMe": {
                          "type": "boolean",
                          "description": "Whether the connected account originated the message."
                        }
                      },
                      "required": [
                        "id",
                        "senderPhone",
                        "text",
                        "timestamp",
                        "fromMe"
                      ],
                      "additionalProperties": false
                    },
                    "maxItems": 100,
                    "description": "Messages associated with this schema.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `100` items |"
                  }
                },
                "required": [
                  "messages"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Project-scoped history fixture",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "fixtureId": {
                      "type": "string",
                      "format": "uuid",
                      "description": "Identifier for the fixture.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                    }
                  },
                  "required": [
                    "fixtureId"
                  ]
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Invalid fixture",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            }
          },
          "403": {
            "description": "Test access required",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            }
          },
          "404": {
            "description": "Project not found",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            }
          },
          "502": {
            "description": "Test runtime unavailable",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "upstream_error",
                    "code": "upstream_failure",
                    "message": "The messaging provider could not complete the request.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#upstream-failure"
                }
              }
            }
          }
        },
        "description": "**Required scope:** `sandbox:write`"
      }
    },
    "/messaging/testing/{projectId}/events/fixtures": {
      "get": {
        "operationId": "listTestEventFixtures",
        "tags": [
          "Testing"
        ],
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "summary": "List test event fixtures",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "path",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Available fixtures and the overrides each accepts",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__TestEventFixtureList"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Test numbers access required, or a client token was used",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            }
          },
          "404": {
            "description": "Project not found",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            }
          },
          "502": {
            "description": "Test access could not be verified",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "upstream_error",
                    "code": "upstream_failure",
                    "message": "The messaging provider could not complete the request.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#upstream-failure"
                }
              }
            }
          }
        },
        "description": "**Required scope:** `sandbox:read`"
      }
    },
    "/messaging/testing/{projectId}/events": {
      "post": {
        "operationId": "triggerTestEvent",
        "tags": [
          "Testing"
        ],
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "summary": "Trigger a test event for a Test number",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "path",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[\\x21-\\x7e]{1,255}$",
              "description": "Optional. Repeating a request with the same key and body reuses the same event ID, so a retry after a failed or uncertain response never creates a second event or duplicate webhook deliveries."
            },
            "required": false,
            "name": "idempotency-key",
            "in": "header",
            "description": "Specifies idempotency key for this header parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[\\x21-\\x7e]{1,255}$` |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__TriggerTestEventRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Test event accepted for delivery",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__TriggerTestEventResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Invalid fixture, override, or real session",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            }
          },
          "403": {
            "description": "Test numbers access required, or a client token was used",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            }
          },
          "404": {
            "description": "Project or Test number not found",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            }
          },
          "429": {
            "description": "Test event rate limit reached",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "rate_limit_error",
                    "code": "rate_limit_exceeded",
                    "message": "The request limit was reached. Follow Retry-After when supplied.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#rate-limit-exceeded"
                }
              }
            }
          },
          "502": {
            "description": "Test event delivery unavailable. Retry with the same Idempotency-Key to avoid a second event.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "upstream_error",
                    "code": "upstream_failure",
                    "message": "The messaging provider could not complete the request.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#upstream-failure"
                }
              }
            }
          }
        },
        "description": "**Required scope:** `sandbox:write`"
      }
    },
    "/messaging/testing/{projectId}/numbers/{session}/phone": {
      "get": {
        "operationId": "getTestingPhone",
        "tags": [
          "Testing"
        ],
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "summary": "Get a Test number's phone",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "path",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256,
              "description": "The Test number's session ID."
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
          }
        ],
        "responses": {
          "200": {
            "description": "The simulated phone and its linked companions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__TestingPhoneState"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "The session is not a Test number in the project",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            }
          },
          "403": {
            "description": "Test numbers access required, or a client token was used",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            }
          },
          "404": {
            "description": "Project not found",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            }
          },
          "502": {
            "description": "The simulated phone could not be read. Retry later.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "upstream_error",
                    "code": "upstream_failure",
                    "message": "The messaging provider could not complete the request.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#upstream-failure"
                }
              }
            }
          }
        },
        "description": "**Required scope:** `sandbox:read`"
      }
    },
    "/messaging/testing/{projectId}/numbers/{session}/phone/messages": {
      "post": {
        "operationId": "sendTestingPhoneMessage",
        "tags": [
          "Testing"
        ],
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "summary": "Send a message from a Test number's phone",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "path",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256,
              "description": "The Test number's session ID."
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__TestingPhoneMessageRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "The phone sent the message",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__TestingPhoneMessage"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "The session or recipient is not a Test number in the project, or the phone is offline",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            }
          },
          "403": {
            "description": "Test numbers access required, or a client token was used",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            }
          },
          "404": {
            "description": "Project not found",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            }
          },
          "429": {
            "description": "Testing rate limit reached",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "rate_limit_error",
                    "code": "rate_limit_exceeded",
                    "message": "The request limit was reached. Follow Retry-After when supplied.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#rate-limit-exceeded"
                }
              }
            }
          },
          "502": {
            "description": "The phone could not send the message. Retry later.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "upstream_error",
                    "code": "upstream_failure",
                    "message": "The messaging provider could not complete the request.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#upstream-failure"
                }
              }
            }
          }
        },
        "description": "**Required scope:** `sandbox:write`"
      }
    },
    "/messaging/testing/{projectId}/numbers/{session}/phone/devices/{deviceId}/unlink": {
      "post": {
        "operationId": "unlinkTestingPhoneDevice",
        "tags": [
          "Testing"
        ],
        "security": [
          {
            "messaging__BearerAuth": []
          }
        ],
        "summary": "Unlink a companion from a Test number's phone",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "path",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256,
              "description": "The Test number's session ID."
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 99,
              "description": "The companion's device ID, as listed by the phone."
            },
            "required": true,
            "name": "deviceId",
            "in": "path",
            "description": "Identifier for the device.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `99` (inclusive) |"
          }
        ],
        "responses": {
          "200": {
            "description": "The companion was unlinked and logged out",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__TestingPhoneUnlink"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "The session is not a Test number in the project, or the phone is offline",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            }
          },
          "403": {
            "description": "Test numbers access required, or a client token was used",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            }
          },
          "404": {
            "description": "Project or companion not found",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            }
          },
          "502": {
            "description": "The phone could not unlink the companion. Retry later.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/messaging__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/messaging__PublicError"
                },
                "example": {
                  "error": {
                    "type": "upstream_error",
                    "code": "upstream_failure",
                    "message": "The messaging provider could not complete the request.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#upstream-failure"
                }
              }
            }
          }
        },
        "description": "**Required scope:** `sandbox:write`"
      }
    },
    "/graph/whatsapp/{version}/debug_token": {
      "get": {
        "operationId": "graphDebugToken",
        "tags": [
          "Graph API"
        ],
        "summary": "Inspect an access token (Meta debug_token shape)",
        "description": "**Protocols:** Meta Cloud API\n\nReturns a Meta-shaped { data: { ... } } introspection envelope describing the authenticated Polymorfa API key, including the granted WhatsApp permissions mapped onto Meta scope strings.",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": false,
            "name": "input_token",
            "in": "query",
            "description": "Specifies input token for this query parameter."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": false,
            "name": "access_token",
            "in": "query",
            "description": "Specifies access token for this query parameter."
          }
        ],
        "responses": {
          "200": {
            "description": "Token introspection envelope",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphDebugTokenResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/graph/whatsapp/{version}/{appId}/uploads": {
      "post": {
        "operationId": "graphCreateUploadSession",
        "tags": [
          "Graph API"
        ],
        "summary": "Resumable Upload — start an upload session",
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `messages:write`\n\nStart a resumable upload. Pass file_name, file_length and file_type as query parameters; returns { id: \"upload:<SESSION_ID>\" } whose id is the path of the subsequent append call.",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "1234567890123456"
            },
            "required": true,
            "name": "appId",
            "in": "path",
            "description": "Identifier of the connected application."
          },
          {
            "schema": {
              "type": "string",
              "example": "header.jpg"
            },
            "required": false,
            "name": "file_name",
            "in": "query",
            "description": "Human-readable file name for this query parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "152728"
            },
            "required": false,
            "name": "file_length",
            "in": "query",
            "description": "Specifies file length for this query parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "image/jpeg"
            },
            "required": false,
            "name": "file_type",
            "in": "query",
            "description": "IANA media type that matches the uploaded file.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Media type | IANA `type/subtype` value matching the payload, such as `application/pdf`, `text/plain`, or `application/vnd.openxmlformats-officedocument.wordprocessingml.document` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Upload session created (Meta response, forwarded verbatim)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphCreateUploadSessionResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/graph/whatsapp/{version}/{objectId}": {
      "post": {
        "operationId": "graphUploadAppend",
        "tags": [
          "Graph API"
        ],
        "summary": "Resumable Upload — append file bytes / finish",
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `messages:write`\n\nAppend the raw file bytes to a resumable upload session. The request body is the binary file contents (no multipart wrapper); send file_offset: 0 on the first call. Returns { h: \"<FILE_HANDLE>\" } on success.",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "description": "A media ID for GET/DELETE, or an upload: session ID for POST."
            },
            "required": true,
            "name": "objectId",
            "in": "path",
            "description": "Identifier for the object."
          }
        ],
        "requestBody": {
          "content": {
            "application/octet-stream": {
              "schema": {
                "$ref": "#/components/schemas/graph__GraphUploadAppendRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "File handle (Meta response, forwarded verbatim)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphUploadAppendResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        }
      },
      "get": {
        "operationId": "graphGetMedia",
        "tags": [
          "Graph API"
        ],
        "summary": "Get media metadata (returns a Polymorfa-hosted download URL)",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "description": "A media ID for GET/DELETE, or an upload: session ID for POST."
            },
            "required": true,
            "name": "objectId",
            "in": "path",
            "description": "Identifier for the object."
          }
        ],
        "responses": {
          "200": {
            "description": "Media metadata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphMediaInfoResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API · Meta Cloud API\n\n**Required scope:** `media:read`"
      },
      "delete": {
        "operationId": "graphDeleteMedia",
        "tags": [
          "Graph API"
        ],
        "summary": "Delete media",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "description": "A media ID for GET/DELETE, or an upload: session ID for POST."
            },
            "required": true,
            "name": "objectId",
            "in": "path",
            "description": "Identifier for the object."
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphSuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API · Meta Cloud API\n\n**Required scope:** `media:manage`"
      }
    },
    "/graph/whatsapp/{version}/{phoneNumberId}/messages": {
      "post": {
        "operationId": "graphSendMessage",
        "tags": [
          "Graph API"
        ],
        "summary": "Send a message or mark read; Official API typing requests are accepted without sending an indicator",
        "description": "**Protocols:** Linked Device API · Meta Cloud API\n\n**Required scope:** `messages:write`\n\nGraph read and typing status requests require an Official API connection. Linked Device connections return a capability error; use the native Messaging API with chat context for read or typing actions there. Official API typing requests are a successful no-op. Structured order_details and order_status interactive messages are not generally available. They are sent only for teams where they are enabled, from Official API Numbers that Meta has made eligible for payments in Brazil. Other teams receive Meta-compatible capability error 131026 without a provider send.",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "123456789012345"
            },
            "required": true,
            "name": "phoneNumberId",
            "in": "path",
            "description": "Identifier for the phone number."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/graph__GraphSendMessageRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Message sent, or status update accepted",
            "headers": {
              "X-Polymorfa-Error-Code": {
                "description": "Polymorfa routing or operation error code; the JSON body retains Meta's numeric error code.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/graph__GraphSendMessageResponse"
                    },
                    {
                      "$ref": "#/components/schemas/graph__GraphSuccessResponse"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "headers": {
              "X-Polymorfa-Error-Code": {
                "description": "Polymorfa routing or operation error code; the JSON body retains Meta's numeric error code.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "headers": {
              "X-Polymorfa-Error-Code": {
                "description": "Polymorfa routing or operation error code; the JSON body retains Meta's numeric error code.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            }
          },
          "403": {
            "description": "Permission error",
            "headers": {
              "X-Polymorfa-Error-Code": {
                "description": "Polymorfa routing or operation error code; the JSON body retains Meta's numeric error code.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "headers": {
              "X-Polymorfa-Error-Code": {
                "description": "Polymorfa routing or operation error code; the JSON body retains Meta's numeric error code.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "headers": {
              "X-Polymorfa-Error-Code": {
                "description": "Polymorfa routing or operation error code; the JSON body retains Meta's numeric error code.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "headers": {
              "X-Polymorfa-Error-Code": {
                "description": "Polymorfa routing or operation error code; the JSON body retains Meta's numeric error code.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            }
          },
          "500": {
            "description": "Internal error",
            "headers": {
              "X-Polymorfa-Error-Code": {
                "description": "Polymorfa routing or operation error code; the JSON body retains Meta's numeric error code.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "headers": {
              "X-Polymorfa-Error-Code": {
                "description": "Polymorfa routing or operation error code; the JSON body retains Meta's numeric error code.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            }
          }
        }
      }
    },
    "/graph/whatsapp/{version}/{phoneNumberId}/media": {
      "post": {
        "operationId": "graphUploadMedia",
        "tags": [
          "Graph API"
        ],
        "summary": "Upload media",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "123456789012345"
            },
            "required": true,
            "name": "phoneNumberId",
            "in": "path",
            "description": "Identifier for the phone number."
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/graph__GraphMediaUploadRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Media uploaded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphMediaUploadResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API · Meta Cloud API\n\n**Required scope:** `media:manage`"
      }
    },
    "/graph/whatsapp/{version}/{mediaId}/download": {
      "get": {
        "operationId": "graphDownloadMedia",
        "tags": [
          "Graph API"
        ],
        "summary": "Download media bytes",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "mediaId",
            "in": "path",
            "description": "Identifier for the media."
          }
        ],
        "responses": {
          "200": {
            "description": "Media bytes",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API · Meta Cloud API\n\n**Required scope:** `media:read`"
      }
    },
    "/graph/whatsapp/{version}/{wabaId}/phone_numbers": {
      "get": {
        "operationId": "graphListPhoneNumbers",
        "tags": [
          "Graph API"
        ],
        "summary": "List the phone numbers under a WhatsApp Business Account",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "200000000000001"
            },
            "required": true,
            "name": "wabaId",
            "in": "path",
            "description": "Identifier for the waba."
          }
        ],
        "responses": {
          "200": {
            "description": "Phone numbers",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphPhoneNumbersResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Linked Device API · Meta Cloud API\n\n**Required scope:** `sessions:read`"
      }
    },
    "/graph/whatsapp/{version}/{phoneNumberId}/whatsapp_business_profile": {
      "get": {
        "operationId": "graphGetBusinessProfile",
        "tags": [
          "Graph API"
        ],
        "summary": "Get the saved business profile for a phone number",
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `sessions:read`\n\nLinked-device and simulated numbers return the saved profile. A real Meta Cloud API number returns capability error `131026`; this route does not read its provider profile.",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "123456789012345"
            },
            "required": true,
            "name": "phoneNumberId",
            "in": "path",
            "description": "Identifier for the phone number."
          }
        ],
        "responses": {
          "200": {
            "description": "Business profile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphBusinessProfileResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        }
      },
      "post": {
        "operationId": "graphUpdateBusinessProfile",
        "tags": [
          "Graph API"
        ],
        "summary": "Update the saved business profile for a phone number",
        "description": "**Protocols:** Linked Device API\n\n**Required scope:** `sessions:manage`\n\nLinked-device and simulated numbers update the saved profile. A real Meta Cloud API number returns capability error `131026` without saving the request; this route does not update its provider profile.",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "123456789012345"
            },
            "required": true,
            "name": "phoneNumberId",
            "in": "path",
            "description": "Identifier for the phone number."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/graph__GraphBusinessProfileUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphProfileUpdateResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/graph/whatsapp/{version}/{wabaId}/message_templates": {
      "post": {
        "operationId": "graphCreateMessageTemplate",
        "tags": [
          "Graph API"
        ],
        "summary": "Create a message template under a WhatsApp Business Account",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "200000000000001"
            },
            "required": true,
            "name": "wabaId",
            "in": "path",
            "description": "Identifier for the waba."
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "description": "Optional key of 1 to 255 UTF-8 bytes, retained for 24 hours. Reuse it for the same request after an uncertain outcome; a completed request is not sent again."
            },
            "required": false,
            "description": "Optional key of 1 to 255 UTF-8 bytes, retained for 24 hours. Reuse it for the same request after an uncertain outcome; a completed request is not sent again.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |",
            "name": "Idempotency-Key",
            "in": "header"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/graph__GraphCreateMessageTemplateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Template submitted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphCreateMessageTemplateResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "Idempotency key completed, in progress, has an unknown outcome, or was reused for a different request",
            "headers": {
              "X-Polymorfa-Error-Code": {
                "description": "Stable idempotency error code",
                "schema": {
                  "type": "string"
                }
              },
              "Idempotent-Replayed": {
                "description": "true for a recorded outcome",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "description": "Seconds before checking an in-progress request again",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "502": {
            "description": "Provider response unavailable or malformed; the write outcome may be unknown",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Provider unavailable or pre-dispatch reservation failed; use the stable error code to distinguish an unknown outcome from a proven no-attempt refusal",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `messages:write`"
      },
      "get": {
        "operationId": "graphListMessageTemplates",
        "tags": [
          "Graph API"
        ],
        "summary": "List the message templates under a WhatsApp Business Account",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "200000000000001"
            },
            "required": true,
            "name": "wabaId",
            "in": "path",
            "description": "Identifier for the waba."
          }
        ],
        "responses": {
          "200": {
            "description": "Message templates",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphMessageTemplatesListResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `messages:write`"
      },
      "delete": {
        "operationId": "graphDeleteMessageTemplate",
        "tags": [
          "Graph API"
        ],
        "summary": "Delete a message template by name",
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `messages:write`\n\nA successful response confirms provider deletion. A later complete catalog read reconciles any stored template copies that could not be removed during the delete request.",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "200000000000001"
            },
            "required": true,
            "name": "wabaId",
            "in": "path",
            "description": "Identifier for the waba."
          },
          {
            "schema": {
              "type": "string",
              "example": "order_update"
            },
            "required": false,
            "name": "name",
            "in": "query",
            "description": "Human-readable name for this resource."
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "description": "Optional key of 1 to 255 UTF-8 bytes, retained for 24 hours. Reuse it for the same request after an uncertain outcome; a completed request is not sent again."
            },
            "required": false,
            "description": "Optional key of 1 to 255 UTF-8 bytes, retained for 24 hours. Reuse it for the same request after an uncertain outcome; a completed request is not sent again.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |",
            "name": "Idempotency-Key",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphDeleteTemplateResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "Idempotency key completed, in progress, has an unknown outcome, or was reused for a different request",
            "headers": {
              "X-Polymorfa-Error-Code": {
                "description": "Stable idempotency error code",
                "schema": {
                  "type": "string"
                }
              },
              "Idempotent-Replayed": {
                "description": "true for a recorded outcome",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "description": "Seconds before checking an in-progress request again",
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "502": {
            "description": "Provider response unavailable or malformed; the write outcome may be unknown",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Provider unavailable or pre-dispatch reservation failed; use the stable error code to distinguish an unknown outcome from a proven no-attempt refusal",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/graph/whatsapp/{version}/{phoneNumberId}/calls": {
      "post": {
        "operationId": "graphCalls",
        "tags": [
          "Graph API"
        ],
        "summary": "WhatsApp Business Calling — call actions (connect / pre-accept / accept / reject / terminate)",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "123456789012345"
            },
            "required": true,
            "name": "phoneNumberId",
            "in": "path",
            "description": "Identifier for the phone number."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/graph__GraphCallsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Meta Calling API response (forwarded verbatim)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphCallsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `messages:write`"
      }
    },
    "/graph/whatsapp/{version}/{phoneNumberId}/message_qrdls": {
      "get": {
        "operationId": "graphListQr",
        "tags": [
          "Graph API"
        ],
        "summary": "List the QR codes / short links for a phone number",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "123456789012345"
            },
            "required": true,
            "name": "phoneNumberId",
            "in": "path",
            "description": "Identifier for the phone number."
          }
        ],
        "responses": {
          "200": {
            "description": "QR codes",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphQrListResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `sessions:read`"
      },
      "post": {
        "operationId": "graphCreateQr",
        "tags": [
          "Graph API"
        ],
        "summary": "Create a QR code / short link for a phone number",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "123456789012345"
            },
            "required": true,
            "name": "phoneNumberId",
            "in": "path",
            "description": "Identifier for the phone number."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/graph__GraphQrCreateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "QR code",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphQrCreateResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `messages:write`"
      }
    },
    "/graph/whatsapp/{version}/{phoneNumberId}/conversational_automation": {
      "get": {
        "operationId": "graphGetConvAuto",
        "tags": [
          "Graph API"
        ],
        "summary": "Get the conversational automation config for a phone number",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "123456789012345"
            },
            "required": true,
            "name": "phoneNumberId",
            "in": "path",
            "description": "Identifier for the phone number."
          }
        ],
        "responses": {
          "200": {
            "description": "Conversational automation config",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphConvAutoResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `sessions:read`"
      },
      "post": {
        "operationId": "graphSetConvAuto",
        "tags": [
          "Graph API"
        ],
        "summary": "Set the conversational automation config for a phone number",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "123456789012345"
            },
            "required": true,
            "name": "phoneNumberId",
            "in": "path",
            "description": "Identifier for the phone number."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/graph__GraphConvAutoRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphConvAutoSetResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `messages:write`"
      }
    },
    "/graph/whatsapp/{version}/{phoneNumberId}/block_users": {
      "get": {
        "operationId": "graphListBlocked",
        "tags": [
          "Graph API"
        ],
        "summary": "List the WhatsApp users blocked for a phone number",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "123456789012345"
            },
            "required": true,
            "name": "phoneNumberId",
            "in": "path",
            "description": "Identifier for the phone number."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,4}$"
            },
            "required": false,
            "name": "limit",
            "in": "query",
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,4}$` |"
          },
          {
            "schema": {
              "type": "string",
              "maxLength": 512
            },
            "required": false,
            "name": "after",
            "in": "query",
            "description": "Specifies after for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `512` characters |"
          },
          {
            "schema": {
              "type": "string",
              "maxLength": 512
            },
            "required": false,
            "name": "before",
            "in": "query",
            "description": "Specifies before for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `512` characters |"
          }
        ],
        "responses": {
          "200": {
            "description": "Blocked users",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphBlockUsersListResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `sessions:read`"
      },
      "post": {
        "operationId": "graphBlock",
        "tags": [
          "Graph API"
        ],
        "summary": "Block WhatsApp users for a phone number",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "123456789012345"
            },
            "required": true,
            "name": "phoneNumberId",
            "in": "path",
            "description": "Identifier for the phone number."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/graph__GraphBlockUsersRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Block result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphBlockUsersResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `messages:write`"
      },
      "delete": {
        "operationId": "graphUnblock",
        "tags": [
          "Graph API"
        ],
        "summary": "Unblock WhatsApp users for a phone number",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "123456789012345"
            },
            "required": true,
            "name": "phoneNumberId",
            "in": "path",
            "description": "Identifier for the phone number."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/graph__GraphBlockUsersRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Unblock result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphBlockUsersResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `messages:write`"
      }
    },
    "/graph/whatsapp/{version}/{wabaId}/product_catalogs": {
      "get": {
        "operationId": "graphListProductCatalogs",
        "tags": [
          "Graph API"
        ],
        "summary": "List the product catalogs linked to a WhatsApp Business Account",
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `sessions:read`\n\nReads Meta's product_catalogs edge for a WhatsApp Business Account that has an Official API Number in the authenticated project. Meta determines catalog visibility and returns permission errors when the connected credentials lack access.",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "200000000000001"
            },
            "required": true,
            "name": "wabaId",
            "in": "path",
            "description": "Identifier for the waba."
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            },
            "required": false,
            "name": "limit",
            "in": "query",
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 4096
            },
            "required": false,
            "name": "after",
            "in": "query",
            "description": "Specifies after for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `4096` characters |"
          }
        ],
        "responses": {
          "200": {
            "description": "Linked product catalogs, with Meta pagination when present",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphProductCatalogsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/graph/whatsapp/{version}/{wabaId}/product_catalogs/{catalogId}/products": {
      "get": {
        "operationId": "graphListCatalogProducts",
        "tags": [
          "Graph API"
        ],
        "summary": "List products in a linked catalog",
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `sessions:read`\n\nReads a small product projection from a catalog linked to an Official API Number's WABA in the authenticated project. Meta controls product visibility and permissions. This is a Polymorfa WABA-scoped path; Meta's product edge is `/{catalogId}/products`.",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "200000000000001"
            },
            "required": true,
            "name": "wabaId",
            "in": "path",
            "description": "Identifier for the waba."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$"
            },
            "required": true,
            "name": "catalogId",
            "in": "path",
            "description": "Identifier of the WhatsApp catalog.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[0-9]+$` |"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            },
            "required": false,
            "name": "limit",
            "in": "query",
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 4096
            },
            "required": false,
            "name": "after",
            "in": "query",
            "description": "Specifies after for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `4096` characters |"
          }
        ],
        "responses": {
          "200": {
            "description": "Linked catalog products and Meta cursors",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphCatalogProductsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/graph/whatsapp/{version}/{phoneNumberId}/whatsapp_commerce_settings": {
      "get": {
        "operationId": "graphGetCommerce",
        "tags": [
          "Graph API"
        ],
        "summary": "Get the WhatsApp commerce settings for a phone number",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "123456789012345"
            },
            "required": true,
            "name": "phoneNumberId",
            "in": "path",
            "description": "Identifier for the phone number."
          }
        ],
        "responses": {
          "200": {
            "description": "Commerce settings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphCommerceSettingsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `sessions:read`"
      },
      "post": {
        "operationId": "graphSetCommerce",
        "tags": [
          "Graph API"
        ],
        "summary": "Update the WhatsApp commerce settings for a phone number",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "123456789012345"
            },
            "required": true,
            "name": "phoneNumberId",
            "in": "path",
            "description": "Identifier for the phone number."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/graph__GraphSetCommerceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated commerce settings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphSetCommerceResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `messages:write`"
      }
    },
    "/graph/whatsapp/{version}/{wabaId}/marketing_messages/status": {
      "get": {
        "operationId": "graphGetMarketingStatus",
        "tags": [
          "Graph API"
        ],
        "summary": "Read Marketing Messages onboarding status for a WABA",
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `sessions:read`\n\nReads Meta's documented Marketing Messages fields for a WABA through a project-owned Official API Number: the WABA onboarding status, the business portfolio's terms of service state and the Cloud API marketing setting. Values are Meta's, unchanged. Terms are accepted in WhatsApp Manager, not through the API. This is a Polymorfa WABA-scoped path, not a Meta edge.",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "200000000000001"
            },
            "required": true,
            "name": "wabaId",
            "in": "path",
            "description": "Identifier for the waba."
          }
        ],
        "responses": {
          "200": {
            "description": "Meta's marketing status fields",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphMarketingStatusResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/graph/whatsapp/{version}/{phoneNumberId}/marketing_messages": {
      "post": {
        "operationId": "graphMarketingSend",
        "tags": [
          "Graph API"
        ],
        "summary": "Send a marketing template message with strict product policy",
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `messages:write`\n\nRequires an explicit STRICT product policy. The connected Meta account must independently meet Marketing Messages eligibility and terms requirements. A simulated Number cannot send this request.",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "123456789012345"
            },
            "required": true,
            "name": "phoneNumberId",
            "in": "path",
            "description": "Identifier for the phone number."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/graph__GraphMarketingSendRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Meta's response to the marketing message request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphMarketingSendResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/graph/whatsapp/{version}/{phoneNumberId}/register": {
      "post": {
        "operationId": "graphRegister",
        "tags": [
          "Graph API"
        ],
        "summary": "Register a phone number for Cloud API",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "123456789012345"
            },
            "required": true,
            "name": "phoneNumberId",
            "in": "path",
            "description": "Identifier for the phone number."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/graph__GraphRegisterRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Registered",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphRegisterResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `messages:write`"
      }
    },
    "/graph/whatsapp/{version}/{phoneNumberId}/deregister": {
      "post": {
        "operationId": "graphDeregister",
        "tags": [
          "Graph API"
        ],
        "summary": "Deregister a phone number from Cloud API",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "123456789012345"
            },
            "required": true,
            "name": "phoneNumberId",
            "in": "path",
            "description": "Identifier for the phone number."
          }
        ],
        "responses": {
          "200": {
            "description": "Deregistered",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphDeregisterResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `messages:write`"
      }
    },
    "/graph/whatsapp/{version}/{phoneNumberId}/request_code": {
      "post": {
        "operationId": "graphRequestCode",
        "tags": [
          "Graph API"
        ],
        "summary": "Request a verification code for a phone number",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "123456789012345"
            },
            "required": true,
            "name": "phoneNumberId",
            "in": "path",
            "description": "Identifier for the phone number."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/graph__GraphRequestCodeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Code requested",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphRequestCodeResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `messages:write`"
      }
    },
    "/graph/whatsapp/{version}/{phoneNumberId}/verify_code": {
      "post": {
        "operationId": "graphVerifyCode",
        "tags": [
          "Graph API"
        ],
        "summary": "Verify a phone number with a received code",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "123456789012345"
            },
            "required": true,
            "name": "phoneNumberId",
            "in": "path",
            "description": "Identifier for the phone number."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/graph__GraphVerifyCodeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Verified",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphVerifyCodeResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `messages:write`"
      }
    },
    "/graph/whatsapp/{version}/{wabaId}/subscribed_apps": {
      "get": {
        "operationId": "graphListSubscribedApps",
        "tags": [
          "Graph API"
        ],
        "summary": "List the apps subscribed to a WhatsApp Business Account's webhooks",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "200000000000001"
            },
            "required": true,
            "name": "wabaId",
            "in": "path",
            "description": "Identifier for the waba."
          }
        ],
        "responses": {
          "200": {
            "description": "Subscribed apps",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphSubscribedAppsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `sessions:read`"
      },
      "post": {
        "operationId": "graphSubscribeApp",
        "tags": [
          "Graph API"
        ],
        "summary": "Subscribe the app to a WhatsApp Business Account's webhooks",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "200000000000001"
            },
            "required": true,
            "name": "wabaId",
            "in": "path",
            "description": "Identifier for the waba."
          }
        ],
        "responses": {
          "200": {
            "description": "Subscribed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphSubscribeAppResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `messages:write`"
      },
      "delete": {
        "operationId": "graphUnsubscribeApp",
        "tags": [
          "Graph API"
        ],
        "summary": "Unsubscribe the app from a WhatsApp Business Account's webhooks",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "200000000000001"
            },
            "required": true,
            "name": "wabaId",
            "in": "path",
            "description": "Identifier for the waba."
          }
        ],
        "responses": {
          "200": {
            "description": "Unsubscribed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphUnsubscribeAppResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `messages:write`"
      }
    },
    "/graph/whatsapp/{version}/{wabaId}/flows": {
      "get": {
        "operationId": "graphListFlows",
        "tags": [
          "Graph API"
        ],
        "summary": "List the Flows under a WhatsApp Business Account",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "200000000000001"
            },
            "required": true,
            "name": "wabaId",
            "in": "path",
            "description": "Identifier for the waba."
          }
        ],
        "responses": {
          "200": {
            "description": "Flows",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphFlowsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `sessions:read`"
      },
      "post": {
        "operationId": "graphCreateFlow",
        "tags": [
          "Graph API"
        ],
        "summary": "Create a Flow under a WhatsApp Business Account",
        "security": [
          {
            "graph__BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "v26.0"
            },
            "required": true,
            "name": "version",
            "in": "path",
            "description": "Specifies version for this path parameter."
          },
          {
            "schema": {
              "type": "string",
              "example": "200000000000001"
            },
            "required": true,
            "name": "wabaId",
            "in": "path",
            "description": "Identifier for the waba."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/graph__GraphCreateFlowRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphCreateFlowResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Permission error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Object does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/graph__GraphError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/graph__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/graph__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/graph__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Protocols:** Meta Cloud API\n\n**Required scope:** `messages:write`"
      }
    },
    "/platform/projects/{projectId}/events/stream": {
      "get": {
        "operationId": "streamProjectEvents",
        "tags": [
          "Events"
        ],
        "summary": "Stream project events",
        "description": "**Required scope:** `events:listen`\n\nOpens a server-sent event (SSE) stream of this project's events. Every event frame carries the same event object as the events API and the exact webhook body when it is available.\n\nSend `Accept: text/event-stream`. Resume after a disconnect by sending the last received `cursor` as `Last-Event-ID` or `cursor`. Cursors are valid for 24 hours and are bound to the organization, project and `types` filter.\n\nWith `ack=auto` (default), each event is released as soon as it is written. With `ack=manual`, at most `maxInFlight` events are outstanding until you acknowledge them; unacknowledged events produce a `backpressure` frame and then a `dropped` frame.\n\nThe stream sends a `heartbeat` frame every `heartbeatIntervalMs`. It closes with `revoked` within one heartbeat after the credential, project or feature access ends, and with `expiry` at `connectionExpiresAt` or after `idleTimeoutMs` without an event. Reconnect from the last cursor after `expiry`, `dropped` or a recoverable `gap`.\n\nRequires `events:listen` and the Event streams beta. Organization API keys and project tokens are accepted; client tokens are rejected.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "path",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "schema": {
              "type": "string",
              "description": "Comma-separated event types to include, or repeat the parameter. A trailing `*` matches a prefix, such as `message.*`. Omit for every type. At most 32 filters.",
              "example": "message.*,session.connected"
            },
            "required": false,
            "name": "types",
            "in": "query",
            "description": "Specifies types for this query parameter."
          },
          {
            "schema": {
              "type": "string",
              "maxLength": 4096,
              "description": "Resume after this cursor. Equivalent to `Last-Event-ID`; if both are sent they must match."
            },
            "required": false,
            "name": "cursor",
            "in": "query",
            "description": "Specifies cursor for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `4096` characters |"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "auto",
                "manual"
              ],
              "description": "`auto` (default) releases events once written. `manual` holds them until acknowledged."
            },
            "required": false,
            "name": "ack",
            "in": "query",
            "description": "Specifies ack for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `auto` | Auto. |\n| `manual` | Manual. |"
          },
          {
            "schema": {
              "type": "string",
              "maxLength": 4096,
              "description": "Resume cursor sent automatically by SSE clients after a reconnect."
            },
            "required": false,
            "name": "Last-Event-ID",
            "in": "header",
            "description": "Identifier for the last event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `4096` characters |"
          }
        ],
        "responses": {
          "200": {
            "description": "An SSE stream. The first frame is `ready`. `revoked`, `expiry`, `dropped` and `gap` frames end the connection, except a `gap` with reason `retention_exceeded`, which reports skipped events and the stream continues.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-cache, no-transform"
                }
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            },
            "content": {
              "text/event-stream": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessEventStreamFrame"
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameter, or `stream_cursor_invalid` when the cursor belongs to another project or filter.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid credential.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "`missing_scope`, `permission_denied`, or `feature_unavailable` when Event streams is not enabled for the team.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "406": {
            "description": "The request did not accept `text/event-stream`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "410": {
            "description": "`stream_cursor_expired`: the cursor is older than 24 hours. Reconnect without a cursor and read missed events from the events API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "`stream_connection_limit_reached` or `rate_limit_exceeded`. Follow `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "A required service is unavailable. Retry with backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/platform/projects/{projectId}/events/stream/{streamId}/ack": {
      "post": {
        "operationId": "acknowledgeProjectEventStream",
        "tags": [
          "Events"
        ],
        "summary": "Acknowledge streamed events",
        "description": "**Required scope:** `events:listen`\n\nAcknowledges every event up to and including `sequence` on a stream opened with `ack=manual`. Acknowledgements are cumulative and idempotent. Use the same credential that opened the stream.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "path",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "streamId",
            "in": "path",
            "description": "Identifier for the stream.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__PlatformAccessEventStreamAckRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Acknowledged",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessEventStreamAckResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Invalid acknowledgement.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid credential.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "`missing_scope` or `permission_denied`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "The stream is not open for this credential and project.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`state_conflict`: the stream closed or the acknowledgement regressed or is ahead of delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "429": {
            "description": "`rate_limit_exceeded`. Follow `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "A required service is unavailable. Retry with backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/platform/client-tokens": {
      "post": {
        "operationId": "mintClientToken",
        "tags": [
          "Client Tokens"
        ],
        "summary": "Mint a short-lived browser-safe client token",
        "description": "**Required scopes (all):** `sessions:manage` · `messages:write` · `contacts:read` · `presence:read` · `presence:observe` · `mcp`\n\nMinting requires an active, unrevoked issuer with the required scopes and current resource ownership. A human-owned issuer must belong to a current team owner or admin who is not banned. Service-account credentials cannot delegate messaging actions. Issuance eligibility denials return 403; unavailable issuance checks return 503 and no token.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__PlatformAccessMintClientTokenRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Token minted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessMintClientTokenResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/platform/sessions/{session}/client-rules": {
      "get": {
        "operationId": "getClientRules",
        "tags": [
          "Client Tokens"
        ],
        "summary": "Get client-token rules for a session",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "responses": {
          "200": {
            "description": "Client rules",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessGetClientRulesResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `sessions:manage`"
      },
      "put": {
        "operationId": "setClientRules",
        "tags": [
          "Client Tokens"
        ],
        "summary": "Set client-token rules for a session",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__PlatformAccessSetClientRulesRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Rules saved",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessSuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scopes (all):** `sessions:manage` · `messages:write` · `contacts:read` · `presence:read` · `presence:observe` · `mcp`"
      },
      "delete": {
        "operationId": "deleteClientRules",
        "tags": [
          "Client Tokens"
        ],
        "summary": "Delete client-token rules for a session",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "responses": {
          "200": {
            "description": "Rules deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessSuccessResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `sessions:manage`"
      }
    },
    "/platform/sessions/{session}/call-settings": {
      "get": {
        "operationId": "getCallSettings",
        "tags": [
          "Calls"
        ],
        "summary": "Get call settings for a session",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          }
        ],
        "responses": {
          "200": {
            "description": "Call settings. Sessions without saved settings return the defaults.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessGetCallSettingsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `sessions:read`"
      },
      "put": {
        "operationId": "updateCallSettings",
        "tags": [
          "Calls"
        ],
        "summary": "Update call settings for a session",
        "description": "**Required scope:** `sessions:manage`\n\nChanges the settings you send; omitted settings keep their current values. Send `expectedRevision` to refuse the update when someone else changed the settings after you read them.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "required": true,
            "name": "session",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__PlatformAccessUpdateCallSettingsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Call settings saved. Audio settings apply to a call the next time a participant answers or connects to it, including calls in progress. Routing settings apply to calls that arrive after the change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessUpdateCallSettingsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`state_conflict`: the settings changed after `expectedRevision`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/platform/call-retention": {
      "get": {
        "operationId": "getCallRetention",
        "tags": [
          "Calls"
        ],
        "summary": "Get your team's call data retention",
        "description": "**Required scope:** `sessions:read`\n\nReturns how long Polymorfa keeps your team's call data. Teams without a saved setting return the default.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "The team's call data retention.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessGetCallRetentionResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      },
      "put": {
        "operationId": "updateCallRetention",
        "tags": [
          "Calls"
        ],
        "summary": "Update your team's call data retention",
        "description": "**Required scope:** `sessions:manage`\n\nRecords how long Polymorfa keeps your team's call data. Requires a team API key. Deletion of call data older than the period starts on a date Polymorfa announces in the changelog; until then, saving a period deletes nothing. Once deletion runs, a shorter period also applies to call data already stored, and deleted data cannot be recovered. Send `expectedRevision` to refuse the update when someone else changed the setting after you read it.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__PlatformAccessUpdateCallRetentionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Call data retention saved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessUpdateCallRetentionResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`state_conflict`: the setting changed after `expectedRevision`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/platform/calls/export": {
      "get": {
        "operationId": "exportCallRecords",
        "tags": [
          "Calls"
        ],
        "summary": "Export call records",
        "description": "**Required scope:** `sessions:read`\n\nReturns up to 1,000 call detail records per request as CSV or newline-delimited JSON, newest first, with the same fields and filters as List call records. The other party appears only as `peerRef`, a team-specific pseudonym. Each CSV page starts with a header row. When more records match, the `Polymorfa-Next-Cursor` response header carries the cursor for the next page; it is absent on the last page.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Project to read. Omit to total every project in the organization. Project tokens always read their own project."
            },
            "required": false,
            "description": "Project to read. Omit to total every project in the organization. Project tokens always read their own project.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |",
            "name": "projectId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "description": "Session name of one number."
            },
            "required": false,
            "description": "Session name of one number.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |",
            "name": "sessionId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "inbound",
                "outbound"
              ]
            },
            "required": false,
            "name": "direction",
            "in": "query",
            "description": "Specifies direction for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inbound` | Inbound. |\n| `outbound` | Outbound. |"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "linked_device",
                "cloud_api"
              ],
              "description": "How the number connects to WhatsApp."
            },
            "required": false,
            "description": "How the number connects to WhatsApp.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `linked_device` | Linked device. |\n| `cloud_api` | Cloud api. |",
            "name": "upstream",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "answered",
                "missed",
                "declined",
                "failed",
                "in_progress"
              ],
              "description": "How the call went. `answered`: media connected, including answered calls still in progress. `declined`: declined by a participant or the other party, or the line was busy. `missed`: nobody answered before ringing stopped or the caller hung up. `failed`: ended before it connected for any other reason. `in_progress`: still ringing."
            },
            "required": false,
            "description": "How the call went. `answered`: media connected, including answered calls still in progress. `declined`: declined by a participant or the other party, or the line was busy. `missed`: nobody answered before ringing stopped or the caller hung up. `failed`: ended before it connected for any other reason. `in_progress`: still ringing.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `answered` | Answered. |\n| `missed` | Missed. |\n| `declined` | Declined. |\n| `failed` | Failed. |\n| `in_progress` | In progress. |",
            "name": "outcome",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "format": "date-time",
              "description": "Include calls that started at or after this time."
            },
            "required": false,
            "description": "Include calls that started at or after this time.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |",
            "name": "since",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "format": "date-time",
              "description": "Include calls that started before this time."
            },
            "required": false,
            "description": "Include calls that started before this time.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |",
            "name": "until",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "csv",
                "ndjson"
              ],
              "default": "csv"
            },
            "required": false,
            "name": "format",
            "in": "query",
            "description": "Specifies format for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `csv` | Csv. |\n| `ndjson` | Ndjson. |"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1000,
              "default": 1000,
              "description": "Records per page, up to 1,000."
            },
            "required": false,
            "description": "Records per page, up to 1,000.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `1000` (inclusive) |",
            "name": "limit",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256,
              "description": "The `Polymorfa-Next-Cursor` value from the previous page. Send the same filters."
            },
            "required": false,
            "description": "The `Polymorfa-Next-Cursor` value from the previous page. Send the same filters.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |",
            "name": "cursor",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "One page of call detail records.",
            "headers": {
              "Polymorfa-Next-Cursor": {
                "schema": {
                  "type": "string",
                  "description": "Cursor for the next page. Absent on the last page."
                },
                "required": false,
                "description": "Cursor for the next page. Absent on the last page."
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            },
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string",
                  "description": "Header row, then one row per call. Columns: callId, projectId, sessionId, direction, upstream, outcome, state, hasVideo, peerRef, startedAt, connectedAt, endedAt, durationSeconds, endReason. Empty fields are null. Text that begins with =, +, -, @, tab or carriage return is prefixed with an apostrophe."
                }
              },
              "application/x-ndjson": {
                "schema": {
                  "type": "string",
                  "description": "One call record JSON object per line, with the fields of List call records."
                }
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/platform/analytics/metrics": {
      "get": {
        "operationId": "exportWhatsAppAnalyticsMetrics",
        "tags": [
          "Analytics"
        ],
        "summary": "Export analytics metrics",
        "description": "**Required scope:** `sessions:read`\n\nAuthenticated metrics for a customer's Prometheus or OpenTelemetry Collector. Requires live Analytics enablement. Disabled Analytics returns only enablement and export-window metrics, with no business measurements. All samples are gauges: counts describe an overlapping window, not monotonic counters. Do not use rate() or increase() on them. Labels contain number/project record IDs and bounded categories, never contact identities or message content. Null or unmeasured values are omitted; coverage and observation timestamps are included. API request vitals retain project/organization scope even when filtering a number.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": false,
            "name": "projectId",
            "in": "query",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "One number record UUID, within the authorized project or organization."
            },
            "required": false,
            "description": "One number record UUID, within the authorized project or organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |",
            "name": "sessionId",
            "in": "query"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 168,
              "default": 24,
              "description": "Number of completed UTC hours in the window, ending at the most recent hour boundary. Default 24; maximum 168."
            },
            "required": false,
            "description": "Number of completed UTC hours in the window, ending at the most recent hour boundary. Default 24; maximum 168.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `168` (inclusive) |",
            "name": "windowHours",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ],
              "default": "false",
              "description": "Include message type, text length, origin, calling-code and device-count breakdowns. Adds metric series."
            },
            "required": false,
            "description": "Include message type, text length, origin, calling-code and device-count breakdowns. Adds metric series.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |\n| `false` | False. |",
            "name": "segments",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "prometheus",
                "openmetrics"
              ],
              "default": "prometheus",
              "description": "Prometheus text 0.0.4 or OpenMetrics text 1.0. The format parameter selects the representation."
            },
            "required": false,
            "description": "Prometheus text 0.0.4 or OpenMetrics text 1.0. The format parameter selects the representation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `prometheus` | Prometheus. |\n| `openmetrics` | Openmetrics. |",
            "name": "format",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Windowed analytics gauges. OpenMetrics ends with # EOF. No JSON envelope.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              },
              "application/openmetrics-text": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Analytics query deadline exceeded. Retry later or use a shorter window.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "service_unavailable",
                    "message": "A required service is unavailable. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#service-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/platform/projects/{projectId}/analytics/metrics": {
      "get": {
        "operationId": "exportProjectWhatsAppAnalyticsMetrics",
        "tags": [
          "Analytics"
        ],
        "summary": "Export project analytics metrics",
        "description": "**Required scope:** `sessions:read`\n\nAuthenticated metrics for a customer's Prometheus or OpenTelemetry Collector. Requires live Analytics enablement. Disabled Analytics returns only enablement and export-window metrics, with no business measurements. All samples are gauges: counts describe an overlapping window, not monotonic counters. Do not use rate() or increase() on them. Labels contain number/project record IDs and bounded categories, never contact identities or message content. Null or unmeasured values are omitted; coverage and observation timestamps are included. API request vitals retain project/organization scope even when filtering a number.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "path",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "One number record UUID, within the authorized project or organization."
            },
            "required": false,
            "description": "One number record UUID, within the authorized project or organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |",
            "name": "sessionId",
            "in": "query"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 168,
              "default": 24,
              "description": "Number of completed UTC hours in the window, ending at the most recent hour boundary. Default 24; maximum 168."
            },
            "required": false,
            "description": "Number of completed UTC hours in the window, ending at the most recent hour boundary. Default 24; maximum 168.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `168` (inclusive) |",
            "name": "windowHours",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ],
              "default": "false",
              "description": "Include message type, text length, origin, calling-code and device-count breakdowns. Adds metric series."
            },
            "required": false,
            "description": "Include message type, text length, origin, calling-code and device-count breakdowns. Adds metric series.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |\n| `false` | False. |",
            "name": "segments",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "prometheus",
                "openmetrics"
              ],
              "default": "prometheus",
              "description": "Prometheus text 0.0.4 or OpenMetrics text 1.0. The format parameter selects the representation."
            },
            "required": false,
            "description": "Prometheus text 0.0.4 or OpenMetrics text 1.0. The format parameter selects the representation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `prometheus` | Prometheus. |\n| `openmetrics` | Openmetrics. |",
            "name": "format",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Windowed analytics gauges. OpenMetrics ends with # EOF. No JSON envelope.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              },
              "application/openmetrics-text": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Analytics query deadline exceeded. Retry later or use a shorter window.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "service_unavailable",
                    "message": "A required service is unavailable. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#service-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/platform/sip/endpoint": {
      "get": {
        "operationId": "getSipEndpoint",
        "tags": [
          "SIP Trunks"
        ],
        "summary": "Get the SIP address",
        "description": "**Required scope:** `sessions:read`\n\nReturns the host and ports your PBX sends SIP to, and the RTP port range to allow for call audio. When this environment does not host SIP, `status` is `sip_not_hosted` and no address is returned. The address is the same for every trunk of every project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "The SIP address, or `sip_not_hosted`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessGetSipEndpointResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/platform/sip-trunks": {
      "get": {
        "operationId": "listSipTrunks",
        "tags": [
          "SIP Trunks"
        ],
        "summary": "List SIP trunks",
        "description": "**Required scope:** `sessions:read`\n\nLists the SIP trunks of a project. Passwords are never returned.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Project whose trunks are listed. Required for organization keys."
            },
            "required": false,
            "name": "projectId",
            "in": "query",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "SIP trunks in creation order.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessListSipTrunksResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      },
      "post": {
        "operationId": "createSipTrunk",
        "tags": [
          "SIP Trunks"
        ],
        "summary": "Create a SIP trunk",
        "description": "**Required scope:** `sessions:manage`\n\nConnects a PBX or SIP trunk to WhatsApp calls. An `outbound` trunk receives the incoming WhatsApp calls of sessions whose call settings route to it. An `inbound` trunk lets your PBX place WhatsApp calls through a session. For trunks that accept calls from your PBX, the response contains the digest credentials once.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__PlatformAccessCreateSipTrunkRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "SIP trunk created. Store `inboundCredentials.password` now; it cannot be retrieved later.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessCreateSipTrunkResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`sip_trunk_limit`: the project already has 100 trunks.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "sip_trunk_limit",
                    "message": "The project has reached its SIP trunk limit.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#sip-trunk-limit"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "`sip_unavailable`: SIP trunks are not available right now.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "sip_unavailable",
                    "message": "SIP trunks are not available.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#sip-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/platform/sip-trunks/{trunkId}": {
      "get": {
        "operationId": "getSipTrunk",
        "tags": [
          "SIP Trunks"
        ],
        "summary": "Get a SIP trunk",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "trunkId",
            "in": "path",
            "description": "Identifier for the trunk.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "The SIP trunk. Passwords are never returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessGetSipTrunkResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `sessions:read`"
      },
      "patch": {
        "operationId": "updateSipTrunk",
        "tags": [
          "SIP Trunks"
        ],
        "summary": "Update a SIP trunk",
        "description": "**Required scope:** `sessions:manage`\n\nChanges the fields you send and keeps the others. Send `expectedRevision` to refuse the change with `409 sip_trunk_revision_conflict` when the trunk changed since you read it. Changes apply to new calls within about a minute; calls in progress continue.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "trunkId",
            "in": "path",
            "description": "Identifier for the trunk.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__PlatformAccessUpdateSipTrunkRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated SIP trunk.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessUpdateSipTrunkResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`sip_trunk_revision_conflict`: the trunk changed after `expectedRevision`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "sip_trunk_revision_conflict",
                    "message": "The SIP trunk changed since it was read.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#sip-trunk-revision-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "`sip_unavailable`: SIP trunks are not available right now.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "sip_unavailable",
                    "message": "SIP trunks are not available.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#sip-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteSipTrunk",
        "tags": [
          "SIP Trunks"
        ],
        "summary": "Delete a SIP trunk",
        "description": "**Required scope:** `sessions:manage`\n\nDeletes the trunk and its credentials. Returns `409 sip_trunk_in_use` while a session's call settings route incoming calls to it.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "trunkId",
            "in": "path",
            "description": "Identifier for the trunk.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "SIP trunk deleted.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessDeleteSipTrunkResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`sip_trunk_in_use`: a session's call settings route incoming calls to the trunk.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "sip_trunk_in_use",
                    "message": "A session still sends incoming calls to this SIP trunk.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#sip-trunk-in-use"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/platform/sip-trunks/{trunkId}/credentials": {
      "post": {
        "operationId": "rotateSipTrunkCredentials",
        "tags": [
          "SIP Trunks"
        ],
        "summary": "Rotate SIP trunk credentials",
        "description": "**Required scope:** `sessions:manage`\n\nReplaces the password your PBX uses to place calls. The previous password stops working within about a minute. Returns `409 state_conflict` for `outbound` trunks.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "trunkId",
            "in": "path",
            "description": "Identifier for the trunk.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "New credentials. The password is shown only in this response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessRotateSipTrunkCredentialsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`state_conflict`: the trunk does not accept calls from a PBX.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "`sip_unavailable`: SIP trunks are not available right now.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "sip_unavailable",
                    "message": "SIP trunks are not available.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#sip-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/platform/call-policy": {
      "get": {
        "operationId": "getCallPolicy",
        "tags": [
          "Call Consent"
        ],
        "summary": "Get the team's call policy",
        "description": "**Required scope:** `sessions:read`\n\nReturns the team's blocked country codes and the size of its do-not-call list.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "The call policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessGetCallPolicyResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      },
      "put": {
        "operationId": "updateCallPolicy",
        "tags": [
          "Call Consent"
        ],
        "summary": "Update the team's blocked country codes",
        "description": "**Required scope:** `sessions:manage`\n\nReplaces the blocked country codes. New calls are checked against the new list at once; calls in progress continue.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__PlatformAccessUpdateCallPolicyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated call policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessUpdateCallPolicyResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`state_conflict`: the policy changed after `expectedRevision`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/platform/call-opt-outs": {
      "get": {
        "operationId": "listCallOptOuts",
        "tags": [
          "Call Consent"
        ],
        "summary": "List the do-not-call list",
        "description": "**Required scope:** `sessions:read`\n\nLists the team's do-not-call entries, newest first.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 500,
              "default": 100,
              "description": "Entries per page, 1 to 500."
            },
            "required": false,
            "name": "limit",
            "in": "query",
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `500` (inclusive) |"
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "`page.nextCursor` from the previous page."
            },
            "required": false,
            "name": "cursor",
            "in": "query",
            "description": "Specifies cursor for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^\\+[1-9]\\d{1,14}$",
              "description": "Return only the entry for this phone number."
            },
            "required": false,
            "name": "phoneNumber",
            "in": "query",
            "description": "Phone number in international format.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\+[1-9]\\d{1,14}$` |"
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[A-Z]{2}\\.[A-Za-z0-9]{1,128}$",
              "description": "Return only the entry for this BSUID."
            },
            "required": false,
            "name": "bsuid",
            "in": "query",
            "description": "Business-scoped user identifier (BSUID), scoped to the owning business portfolio.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Z]{2}\\.[A-Za-z0-9]{1,128}$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "One page of entries.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessListCallOptOutsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      },
      "post": {
        "operationId": "createCallOptOut",
        "tags": [
          "Call Consent"
        ],
        "summary": "Add a person to the do-not-call list",
        "description": "**Required scope:** `sessions:manage`\n\nAdds a phone number or BSUID. Calls to it are refused with `403 call_recipient_opted_out` from then on. Adding an entry that already exists returns it with `200`.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__PlatformAccessCreateCallOptOutRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The entry already existed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessExistingCallOptOutResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "201": {
            "description": "Entry added.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessCreateCallOptOutResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`call_opt_out_limit`: the list already holds 100,000 entries.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "call_opt_out_limit",
                    "message": "The team's do-not-call list is full.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#call-opt-out-limit"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/platform/call-opt-outs/import": {
      "post": {
        "operationId": "importCallOptOuts",
        "tags": [
          "Call Consent"
        ],
        "summary": "Import do-not-call entries",
        "description": "**Required scope:** `sessions:manage`\n\nAdds up to 5,000 entries in one request. Valid entries are added together; invalid ones are listed in `rejected`. If the valid entries would take the list past its limit, nothing is added and the request fails with `409 call_opt_out_limit`.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__PlatformAccessImportCallOptOutsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Import result.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessImportCallOptOutsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`call_opt_out_limit`: the entries would take the list past 100,000 entries.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "call_opt_out_limit",
                    "message": "The team's do-not-call list is full.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#call-opt-out-limit"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/platform/call-opt-outs/{optOutId}": {
      "delete": {
        "operationId": "deleteCallOptOut",
        "tags": [
          "Call Consent"
        ],
        "summary": "Remove a person from the do-not-call list",
        "description": "**Required scope:** `sessions:manage`\n\nRemoves one entry. The person can be called again.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "optOutId",
            "in": "path",
            "description": "Identifier for the opt out.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Entry removed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessDeleteCallOptOutResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/platform/voice/audio": {
      "get": {
        "operationId": "listVoiceAudio",
        "tags": [
          "Voice"
        ],
        "summary": "List audio assets",
        "description": "**Required scope:** `voice:read`\n\nLists a project's audio assets, newest first.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Project whose assets are listed. Required for organization keys."
            },
            "required": false,
            "name": "projectId",
            "in": "query",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "schema": {
              "$ref": "#/components/schemas/platform__PlatformAccessVoiceAudioStatus"
            },
            "required": false,
            "name": "status",
            "in": "query",
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending_upload` | Pending upload. |\n| `uploaded` | Uploaded. |\n| `transcoding` | Transcoding. |\n| `ready` | Ready. |\n| `failed` | Failed. |"
          },
          {
            "schema": {
              "type": "string",
              "maxLength": 200,
              "description": "`page.nextCursor` of the previous page."
            },
            "required": false,
            "name": "cursor",
            "in": "query",
            "description": "Specifies cursor for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `200` characters |"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "description": "1 to 100. Defaults to 50."
            },
            "required": false,
            "name": "limit",
            "in": "query",
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          }
        ],
        "responses": {
          "200": {
            "description": "A page of audio assets.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessListVoiceAudioResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      },
      "post": {
        "operationId": "createVoiceAudioUpload",
        "tags": [
          "Voice"
        ],
        "summary": "Upload an audio file",
        "description": "**Required scope:** `voice:manage`\n\nCreates an audio asset and returns a URL to send the file to. Send the file with `POST` and the returned headers within 5 minutes, then call `POST /platform/voice/audio/{assetId}/complete`. MP3, WAV, OGG (Opus or Vorbis) and M4A (AAC), up to 16 MB and 10 minutes of audio.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__PlatformAccessCreateVoiceAudioUploadRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Asset created in `pending_upload`, with the upload URL.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessCreateVoiceAudioUploadResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "402": {
            "description": "`gate_limit_reached`: a Voice Automation limit is enforced and reached.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "gate_limit_reached",
                    "message": "A usage limit for this team or number was reached.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#gate-limit-reached"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "`voice_not_enabled`: the team is not enrolled in the Voice Automation beta. Also `permission_denied` and `missing_scope`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "voice_not_enabled",
                    "message": "The Voice Automation beta is not enabled for this team.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#voice-not-enabled"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`state_conflict`: the project already holds 500 audio assets.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "`voice_unavailable`: audio storage is not configured. `provider_unavailable`: the voice provider did not answer.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "voice_unavailable",
                    "message": "Voice Automation storage is not available.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#voice-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/platform/voice/audio/tts": {
      "post": {
        "operationId": "synthesizeVoiceAudio",
        "tags": [
          "Voice"
        ],
        "summary": "Generate speech",
        "description": "**Required scope:** `voice:manage`\n\nGenerates speech from text with ElevenLabs or OpenAI and stores it as an audio asset. Without `credentialId` Polymorfa's provider key is used; with it, your stored key for that provider. The provider processes the text. The asset converts asynchronously like an upload.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__PlatformAccessSynthesizeVoiceAudioRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Asset created, now `transcoding`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessSynthesizeVoiceAudioResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "402": {
            "description": "`gate_limit_reached`: a Voice Automation limit is enforced and reached.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "gate_limit_reached",
                    "message": "A usage limit for this team or number was reached.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#gate-limit-reached"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "`voice_not_enabled`: the team is not enrolled in the Voice Automation beta. Also `permission_denied` and `missing_scope`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "voice_not_enabled",
                    "message": "The Voice Automation beta is not enabled for this team.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#voice-not-enabled"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`state_conflict`: the project already holds 500 audio assets.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "422": {
            "description": "`provider_credential_invalid`: the provider rejected your stored key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "provider_credential_invalid",
                    "message": "The voice provider rejected the key.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#provider-credential-invalid"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "`voice_unavailable`: audio storage is not configured. `provider_unavailable`: the voice provider did not answer.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "voice_unavailable",
                    "message": "Voice Automation storage is not available.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#voice-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/platform/voice/audio/{assetId}/complete": {
      "post": {
        "operationId": "completeVoiceAudioUpload",
        "tags": [
          "Voice"
        ],
        "summary": "Complete an audio upload",
        "description": "**Required scope:** `voice:manage`\n\nConfirms that the file was sent and starts conversion. The asset moves to `transcoding`, then to `ready` or `failed`; the `voice.asset_ready` or `voice.asset_failed` webhook reports the result.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "assetId",
            "in": "path",
            "description": "Identifier for the asset.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "The asset, now `transcoding`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessCompleteVoiceAudioUploadResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "`voice_not_enabled`: the team is not enrolled in the Voice Automation beta. Also `permission_denied` and `missing_scope`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "voice_not_enabled",
                    "message": "The Voice Automation beta is not enabled for this team.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#voice-not-enabled"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`state_conflict`: the asset is not waiting for an upload, or the file was not received.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "`voice_unavailable`: audio storage is not configured. `provider_unavailable`: the voice provider did not answer.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "voice_unavailable",
                    "message": "Voice Automation storage is not available.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#voice-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/platform/voice/audio/{assetId}": {
      "get": {
        "operationId": "getVoiceAudio",
        "tags": [
          "Voice"
        ],
        "summary": "Get an audio asset",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "assetId",
            "in": "path",
            "description": "Identifier for the asset.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "The audio asset.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessGetVoiceAudioResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `voice:read`"
      },
      "patch": {
        "operationId": "updateVoiceAudio",
        "tags": [
          "Voice"
        ],
        "summary": "Update an audio asset",
        "description": "**Required scope:** `voice:manage`\n\nRenames an asset or changes its retention. Send `expectedRevision` to refuse the change with `409 voice_asset_revision_conflict` when the asset changed since you read it.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "assetId",
            "in": "path",
            "description": "Identifier for the asset.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__PlatformAccessUpdateVoiceAudioRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated asset.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessUpdateVoiceAudioResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "`voice_not_enabled`: the team is not enrolled in the Voice Automation beta. Also `permission_denied` and `missing_scope`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "voice_not_enabled",
                    "message": "The Voice Automation beta is not enabled for this team.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#voice-not-enabled"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`voice_asset_revision_conflict`: the asset changed after `expectedRevision`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "voice_asset_revision_conflict",
                    "message": "The audio asset changed since it was read.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#voice-asset-revision-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteVoiceAudio",
        "tags": [
          "Voice"
        ],
        "summary": "Delete an audio asset",
        "description": "**Required scope:** `voice:manage`\n\nDeletes the asset and its stored audio. Returns `409 voice_asset_in_use` while a campaign or flow uses it.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "assetId",
            "in": "path",
            "description": "Identifier for the asset.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Asset deleted.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessDeleteVoiceAudioResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`voice_asset_in_use`: a campaign or flow uses the asset.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "voice_asset_in_use",
                    "message": "A campaign or flow uses this audio asset.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#voice-asset-in-use"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/platform/voice/audio/{assetId}/preview": {
      "get": {
        "operationId": "getVoiceAudioPreview",
        "tags": [
          "Voice"
        ],
        "summary": "Get an audio preview URL",
        "description": "**Required scope:** `voice:read`\n\nReturns a URL, valid for 5 minutes, to an Opus-in-Ogg preview of a `ready` asset for playback.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "assetId",
            "in": "path",
            "description": "Identifier for the asset.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Preview URL.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessGetVoiceAudioPreviewResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`asset_not_ready`: the asset is not `ready`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "asset_not_ready",
                    "message": "The audio asset is not ready.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#asset-not-ready"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "`voice_unavailable`: audio storage is not configured. `provider_unavailable`: the voice provider did not answer.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "voice_unavailable",
                    "message": "Voice Automation storage is not available.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#voice-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/platform/voice/provider-credentials": {
      "get": {
        "operationId": "listVoiceProviderCredentials",
        "tags": [
          "Voice"
        ],
        "summary": "List voice provider credentials",
        "description": "**Required scope:** `voice:read`\n\nLists your stored ElevenLabs and OpenAI keys. Keys are never returned; `keyFingerprint` identifies them.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Also list this project's keys. Team-wide keys are always listed."
            },
            "required": false,
            "name": "projectId",
            "in": "query",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Provider credentials in creation order.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessListVoiceProviderCredentialsResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      },
      "post": {
        "operationId": "createVoiceProviderCredential",
        "tags": [
          "Voice"
        ],
        "summary": "Store a voice provider credential",
        "description": "**Required scope:** `voice:manage`\n\nStores your ElevenLabs or OpenAI API key, encrypted, after checking it with the provider. A key the provider rejects is not stored. When the provider cannot be reached the key is stored with status `unverified`. The key is never returned.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__PlatformAccessCreateVoiceProviderCredentialRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Credential stored.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessCreateVoiceProviderCredentialResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "402": {
            "description": "`gate_limit_reached`: a Voice Automation limit is enforced and reached.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "gate_limit_reached",
                    "message": "A usage limit for this team or number was reached.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#gate-limit-reached"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "`voice_not_enabled`: the team is not enrolled in the Voice Automation beta. Also `permission_denied` and `missing_scope`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "voice_not_enabled",
                    "message": "The Voice Automation beta is not enabled for this team.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#voice-not-enabled"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "`state_conflict`: the same key is already stored for this provider and project, or the team holds 50 credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "422": {
            "description": "`provider_credential_invalid`: the provider rejected the key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "provider_credential_invalid",
                    "message": "The voice provider rejected the key.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#provider-credential-invalid"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "`voice_unavailable`: credential storage is not configured.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "voice_unavailable",
                    "message": "Voice Automation storage is not available.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#voice-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/platform/voice/provider-credentials/{credentialId}": {
      "get": {
        "operationId": "getVoiceProviderCredential",
        "tags": [
          "Voice"
        ],
        "summary": "Get a voice provider credential",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "credentialId",
            "in": "path",
            "description": "Identifier for the credential.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "The credential, without its key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessGetVoiceProviderCredentialResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `voice:read`"
      },
      "delete": {
        "operationId": "deleteVoiceProviderCredential",
        "tags": [
          "Voice"
        ],
        "summary": "Delete a voice provider credential",
        "description": "**Required scope:** `voice:manage`\n\nDeletes the stored key. Requests that name it with `credentialId` fail afterwards.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "credentialId",
            "in": "path",
            "description": "Identifier for the credential.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Credential deleted.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessDeleteVoiceProviderCredentialResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/platform/voice/provider-credentials/{credentialId}/verify": {
      "post": {
        "operationId": "verifyVoiceProviderCredential",
        "tags": [
          "Voice"
        ],
        "summary": "Verify a voice provider credential",
        "description": "**Required scope:** `voice:manage`\n\nChecks the stored key with the provider again and records the result in `status`, `verifiedAt` and `lastError`.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "credentialId",
            "in": "path",
            "description": "Identifier for the credential.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "The credential with the new result.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessVerifyVoiceProviderCredentialResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "`voice_not_enabled`: the team is not enrolled in the Voice Automation beta. Also `permission_denied` and `missing_scope`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "voice_not_enabled",
                    "message": "The Voice Automation beta is not enabled for this team.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#voice-not-enabled"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "`voice_unavailable`: credential storage is not configured.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "voice_unavailable",
                    "message": "Voice Automation storage is not available.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#voice-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        }
      }
    },
    "/platform/sessions/{sessionId}": {
      "get": {
        "operationId": "getSession",
        "tags": [
          "Sessions"
        ],
        "summary": "Get session details",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "sessionId",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "responses": {
          "200": {
            "description": "Session details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessGetSessionResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `sessions:read`"
      },
      "put": {
        "operationId": "updateSession",
        "tags": [
          "Sessions"
        ],
        "summary": "Update session configuration",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "sessionId",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__PlatformAccessUpdateSessionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Desired configuration stored; application reports pending until the runtime acknowledges",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessUpdateSessionResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "409": {
            "description": "Configuration revision changed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "conflict_error",
                    "code": "state_conflict",
                    "message": "The request conflicts with the resource state.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#state-conflict"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "503": {
            "description": "Session configuration persistence is unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "service_unavailable",
                    "message": "A required service is unavailable. Check completion before repeating a write.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#service-unavailable"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `sessions:manage`"
      },
      "delete": {
        "operationId": "deletePlatformSession",
        "tags": [
          "sessions"
        ],
        "summary": "Remove a session",
        "description": "Permanently removes a testing number. Production-number deletion requires support and returns 409 without removing the number.\n\nRequires `sessions:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "Database session UUID or stable session slug.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |",
            "schema": {
              "$ref": "#/components/schemas/platform__SessionIdentifier"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__SessionRemoveResult"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      },
      "patch": {
        "operationId": "setSessionTierOverride",
        "tags": [
          "sessions"
        ],
        "summary": "Confirm a number tier change",
        "description": "Confirms a previously reviewed tier quote. An upgrade purchases a full fresh 24-hour window without refunding remaining time. A downgrade applies at the paid-window end. Poll the tier quote until applied or rejected; accepting the request does not grant the new tier.\n\nRequires `sessions:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "Database session UUID or stable session slug.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |",
            "schema": {
              "$ref": "#/components/schemas/platform__SessionIdentifier"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__SessionTierOverrideRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__NumberTierChange"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/sessions/{sessionId}/restart": {
      "post": {
        "operationId": "restartSession",
        "tags": [
          "Sessions"
        ],
        "summary": "Restart a session",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "sessionId",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "responses": {
          "202": {
            "description": "Testing session reconnected and ready, or production-session restart scheduled",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessOperationAccepted"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `sessions:manage`"
      }
    },
    "/platform/sessions/{sessionId}/logout": {
      "post": {
        "operationId": "logoutSession",
        "tags": [
          "Sessions"
        ],
        "summary": "Log the session out of WhatsApp",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "sessionId",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "responses": {
          "202": {
            "description": "Session logout scheduled",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessOperationAccepted"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `sessions:manage`"
      }
    },
    "/platform/sessions/{sessionId}/me": {
      "get": {
        "operationId": "getSessionAccount",
        "tags": [
          "Sessions"
        ],
        "summary": "Get the connected WhatsApp account info",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "sessionId",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "responses": {
          "200": {
            "description": "Account info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessGetSessionAccountResponse"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `sessions:read`"
      }
    },
    "/platform/sessions/{sessionId}/handoff-keys": {
      "post": {
        "operationId": "sessionHandoffKeys",
        "tags": [
          "Sessions"
        ],
        "summary": "Initiate M↔P toggle: fetch the destination Curve25519 pubkey",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "sessionId",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "responses": {
          "200": {
            "description": "Destination pubkey + correlation id for the handoff",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessHandoffKeysSuccess"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `sessions:manage`"
      }
    },
    "/platform/sessions/{sessionId}/handoff-import": {
      "post": {
        "operationId": "sessionHandoffImport",
        "tags": [
          "Sessions"
        ],
        "summary": "Ship a sealed SignalStoreSnapshot from customer Baileys to the runner",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "sessionId",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__PlatformAccessHandoffImportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Import accepted; bartenderMode will flip after the runner acks",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessHandoffImportSuccess"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `sessions:manage`"
      }
    },
    "/platform/sessions/{sessionId}/upload-appstate-keys": {
      "post": {
        "operationId": "sessionUploadAppStateKeys",
        "tags": [
          "Sessions"
        ],
        "summary": "Upload selected AppStateSyncKeys (Track P+ tier)",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "sessionId",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__PlatformAccessUploadAppStateKeysRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Keys persisted; mode may have been flipped per upgradeTo",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessUploadAppStateKeysSuccess"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `sessions:manage`"
      }
    },
    "/platform/sessions/{sessionId}/handoff-ack": {
      "post": {
        "operationId": "sessionHandoffAck",
        "tags": [
          "Sessions"
        ],
        "summary": "Acknowledge receipt of an M→P export; API flips bartenderMode after hash verify",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "sessionId",
            "in": "path",
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__PlatformAccessHandoffAckRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ack accepted; bartenderMode flipped from magic → passthrough",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessHandoffAckSuccess"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "400": {
            "description": "Bad request — request body or params failed validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "invalid_parameter",
                    "message": "Correct the invalid request field.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-parameter"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "authentication_error",
                    "code": "invalid_credential",
                    "message": "Supply a valid credential.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#invalid-credential"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "403": {
            "description": "Authenticated but not permitted (missing scope or rule violation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "permission_error",
                    "code": "permission_denied",
                    "message": "The credential does not have access to this resource.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#permission-denied"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "invalid_request_error",
                    "code": "resource_not_found",
                    "message": "The resource is unavailable to this caller.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#resource-not-found"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__PlatformAccessPublicError"
                },
                "example": {
                  "error": {
                    "type": "api_error",
                    "code": "internal_error",
                    "message": "An unexpected service failure occurred. Keep the request ID for support.",
                    "param": null,
                    "request_id": "5f0c2a8e-3b1d-4c6f-9e2a-7d4b1c8f6a30"
                  },
                  "data": null,
                  "docs": "https://docs.polymorfa.com/api/errors#internal-error"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/platform__X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/platform__X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/platform__X-RateLimit-Reset"
              }
            }
          }
        },
        "description": "**Required scope:** `sessions:manage`"
      }
    },
    "/platform/session-configuration": {
      "get": {
        "operationId": "getSessionConfigurationDefaults",
        "tags": [
          "session-configuration"
        ],
        "summary": "Read session configuration defaults",
        "description": "Returns effective team or project defaults, explicit overrides, and their source.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the Polymorfa project that owns this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__SessionConfigurationView"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      },
      "put": {
        "operationId": "updateSessionConfigurationDefaults",
        "tags": [
          "session-configuration"
        ],
        "summary": "Update session configuration defaults",
        "description": "Updates explicit defaults using a revision check. Existing sessions inherit fields they have not overridden. Runtime application is asynchronous.\n\nRequires `sessions:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__SessionConfigurationUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__SessionConfigurationView"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/sessions": {
      "get": {
        "operationId": "listPlatformSessions",
        "tags": [
          "sessions"
        ],
        "summary": "List sessions",
        "description": "Lists every session in the authenticated team or selected project, including disconnected sessions and their latest status reason.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the Polymorfa project that owns this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__PlatformSession"
                      },
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/sessions/{sessionId}/start": {
      "post": {
        "operationId": "startPlatformSession",
        "tags": [
          "sessions"
        ],
        "summary": "Start a session",
        "description": "Starts a stopped session or retries a session whose runtime failed. A hosted paid number must reserve credit before connecting; insufficient available credit returns 402. A new paid window is charged only after the messaging connection succeeds. Monthly project and number credit limits also apply: a new charge that would exceed either limit returns 409 state_conflict. Already-paid service remains available until its paid window ends. The identifier may be the session UUID or stable session slug.\n\nRequires `sessions:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "Database session UUID or stable session slug.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |",
            "schema": {
              "$ref": "#/components/schemas/platform__SessionIdentifier"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__SessionProjectContext"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__SessionStartResult"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/platform__BillingCreditRequired"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          },
          "500": {
            "$ref": "#/components/responses/platform__InternalError"
          }
        }
      }
    },
    "/platform/sessions/{sessionId}/stop": {
      "post": {
        "operationId": "stopPlatformSession",
        "tags": [
          "sessions"
        ],
        "summary": "Stop a session",
        "description": "Requests an asynchronous stop for one session. The identifier may be the session UUID or stable session slug.\n\nRequires `sessions:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "Database session UUID or stable session slug.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |",
            "schema": {
              "$ref": "#/components/schemas/platform__SessionIdentifier"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__SessionProjectContext"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__SessionStopResult"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "500": {
            "$ref": "#/components/responses/platform__InternalError"
          }
        }
      }
    },
    "/platform/sessions/{sessionId}/tier-quotes": {
      "post": {
        "operationId": "quoteSessionTierChange",
        "tags": [
          "sessions"
        ],
        "summary": "Preview a number tier change",
        "description": "Returns the full credit charge and effective time before confirmation. Null tierOverride restores project inheritance. Creating a quote does not change the number or consume credit. Quotes expire after ten minutes and are invalidated when the number or price changes.\n\nRequires `sessions:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "Database session UUID or stable session slug.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |",
            "schema": {
              "$ref": "#/components/schemas/platform__SessionIdentifier"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__NumberTierQuoteRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__NumberTierChange"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/sessions/{sessionId}/tier-quotes/{quoteId}": {
      "get": {
        "operationId": "getSessionTierChange",
        "tags": [
          "sessions"
        ],
        "summary": "Read a number tier change",
        "description": "Reads the quote and durable result for a number in the authenticated project scope.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "Database session UUID or stable session slug.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |",
            "schema": {
              "$ref": "#/components/schemas/platform__SessionIdentifier"
            }
          },
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the quote."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__NumberTierChange"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/sessions/{sessionId}/capabilities": {
      "get": {
        "operationId": "getSessionCapabilities",
        "tags": [
          "sessions"
        ],
        "summary": "Get a number's WhatsApp capabilities",
        "description": "Returns which WhatsApp features WhatsApp has enabled for this number, and the limits it applies, as of the number's last configuration sync. Each value reflects WhatsApp's configuration at `syncedAt`, not a live check. Values describe the WhatsApp account last linked to the number, whether or not it is connected now; read the session for its connection status. Before the first sync, from the first sync attempt of another linked WhatsApp account until its configuration is synced, and when Polymorfa cannot tell whether the stored configuration belongs to the account linked now, `status` is `unknown` and every value is null. Values come from a linked-device connection: a number that has never had one (Official API only) reports `unknown`, and a number whose linked-device connection was removed keeps the values last synced. A capability reports what WhatsApp allows the number; it does not mean the Polymorfa API offers an operation for that feature. This is a beta: teams that are not enrolled receive 403.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "Database session UUID or stable session slug.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |",
            "schema": {
              "$ref": "#/components/schemas/platform__SessionIdentifier"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__SessionCapabilities"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/sessions/stop": {
      "post": {
        "operationId": "stopSessions",
        "tags": [
          "sessions"
        ],
        "summary": "Stop multiple sessions",
        "description": "Requests asynchronous stops for up to 100 session UUIDs or slugs in the authenticated project scope.\n\nRequires `sessions:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__SessionBatchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__SessionBatchStopResult"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "500": {
            "$ref": "#/components/responses/platform__InternalError"
          }
        }
      }
    },
    "/platform/sessions/delete": {
      "post": {
        "operationId": "deleteSessions",
        "tags": [
          "sessions"
        ],
        "summary": "Remove multiple sessions",
        "description": "Permanently removes up to 100 testing numbers. A batch containing a production number returns 409 without removing any number.\n\nRequires `sessions:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__SessionBatchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__SessionBatchRemoveResult"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/bans": {
      "get": {
        "operationId": "listSessionBans",
        "tags": [
          "bans"
        ],
        "summary": "List session bans",
        "description": "Public Management API. API keys require `sessions:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__DataEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/bans/active": {
      "get": {
        "operationId": "listActiveSessionBans",
        "tags": [
          "bans"
        ],
        "summary": "List active session bans",
        "description": "Public Management API. API keys require `sessions:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__DataEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/bansafe/health": {
      "get": {
        "operationId": "listBanSafeHealth",
        "tags": [
          "bansafe"
        ],
        "summary": "List number safety",
        "description": "Lists present Health, findings counts, and the active Polymorfa restriction for every number in one project. Health is a 0 to 100 estimate from rules v1 or a validated learned model. It remains null until enough fresh evidence is available.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the Polymorfa project that owns this resource."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies cursor for this query parameter."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__BanSafeNumber"
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CursorPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/bansafe/health/{session}": {
      "get": {
        "operationId": "getBanSafeHealth",
        "tags": [
          "bansafe"
        ],
        "summary": "Get number safety",
        "description": "Returns one number's present Health estimate and model metadata, retained open and acknowledged findings with their observation times, directly observed account state, the active Polymorfa restriction, and how that restriction lifts. Recorded findings and observed state remain separate from the estimate.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "session",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__BanSafeNumberDetail"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/bansafe/health/{session}/history": {
      "get": {
        "operationId": "listBanSafeHealthHistory",
        "tags": [
          "bansafe"
        ],
        "summary": "List number health history",
        "description": "Returns the newest Health evaluations since the requested date, up to the limit, ordered oldest to newest. Each point carries its estimator source and version, evidence coverage, reliability, and availability reason.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "session",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "name": "since",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Specifies since for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 720,
              "default": 720
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `720` (inclusive) |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__BanSafeHealthHistory"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/bansafe/signals": {
      "get": {
        "operationId": "listBanSafeSignals",
        "tags": [
          "bansafe"
        ],
        "summary": "List BanSafe telemetry signals",
        "description": "Lists the bounded numeric, boolean, enum, histogram, and error-code aggregate signals that BanSafe can return. The catalogue contains no message content, recipient identifiers, or raw telemetry records.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__BanSafeSignalDefinition"
                      },
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/bansafe/telemetry/{session}": {
      "get": {
        "operationId": "getBanSafeTelemetry",
        "tags": [
          "bansafe"
        ],
        "summary": "Get latest BanSafe telemetry",
        "description": "Returns collection availability and the latest supported telemetry snapshot for one number. Empty collection is reported as not collected, not as a disabled collector.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "session",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the connected Polymorfa session."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__BanSafeTelemetryDetail"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/bansafe/telemetry/{session}/history": {
      "get": {
        "operationId": "listBanSafeTelemetryHistory",
        "tags": [
          "bansafe"
        ],
        "summary": "List BanSafe telemetry history",
        "description": "Returns the newest supported telemetry snapshots for one number. Signals are fixed-schema safe aggregates with explicit measured state; raw records and identifiers inside them are not returned.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "session",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the connected Polymorfa session."
          },
          {
            "name": "since",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Specifies since for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          {
            "name": "until",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Specifies until for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies cursor for this query parameter."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 10
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `50` (inclusive) |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__BanSafeTelemetrySnapshot"
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CursorPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/bansafe/collection": {
      "get": {
        "operationId": "listBanSafeCollection",
        "tags": [
          "bansafe"
        ],
        "summary": "List BanSafe collection status",
        "description": "Lists telemetry collection freshness for the numbers in one project. Status is derived from ingested records and does not guess whether a collector flag is configured.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the Polymorfa project that owns this resource."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies cursor for this query parameter."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__BanSafeCollectionSession"
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CursorPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/bansafe/health-actions": {
      "get": {
        "operationId": "listBanSafeHealthActions",
        "tags": [
          "bansafe"
        ],
        "summary": "List Health rule actions",
        "description": "Lists the durable customer-visible outcomes of project Health rule actions, newest first. Internal leases, retry bookkeeping, runtime identifiers, and free-form outcomes are omitted.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the Polymorfa project that owns this resource."
          },
          {
            "name": "session",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "pending",
                "running",
                "succeeded",
                "failed",
                "cancelled"
              ]
            },
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending` | Pending. |\n| `running` | Running. |\n| `succeeded` | Succeeded. |\n| `failed` | Failed. |\n| `cancelled` | Cancelled. |"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies cursor for this query parameter."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__BanSafeHealthAction"
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CursorPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/bansafe/findings": {
      "get": {
        "operationId": "listBanSafeFindings",
        "tags": [
          "bansafe"
        ],
        "summary": "List safety findings",
        "description": "Lists safety findings across the team, filterable by project, number, status, and severity. Evidence is numbers only and never contains message content or a recipient identifier.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the Polymorfa project that owns this resource."
          },
          {
            "name": "session",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "open",
                "acknowledged",
                "resolved"
              ]
            },
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `open` | Open. |\n| `acknowledged` | Acknowledged. |\n| `resolved` | Resolved. |"
          },
          {
            "name": "severity",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "info",
                "warning",
                "critical"
              ]
            },
            "description": "Specifies severity for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `info` | Info. |\n| `warning` | Warning. |\n| `critical` | Critical. |"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies cursor for this query parameter."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__BanSafeFinding"
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CursorPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/bansafe/enforcement": {
      "get": {
        "operationId": "listBanSafeEnforcement",
        "tags": [
          "bansafe"
        ],
        "summary": "List number restrictions",
        "description": "Lists every number Polymorfa is currently restricting, what the restriction blocks, and the exact condition that lifts it.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the Polymorfa project that owns this resource."
          },
          {
            "name": "rung",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "none",
                "notify",
                "throttle",
                "block_cold",
                "suspend"
              ]
            },
            "description": "Specifies rung for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `notify` | Notify. |\n| `throttle` | Throttle. |\n| `block_cold` | Block cold. |\n| `suspend` | Suspend. |"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies cursor for this query parameter."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__BanSafeEnforcementSummary"
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CursorPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/bansafe/incidents": {
      "get": {
        "operationId": "listBanSafeIncidents",
        "tags": [
          "bansafe"
        ],
        "summary": "List safety incidents",
        "description": "Lists the WhatsApp restrictions and customer reports recorded for the team's numbers.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the Polymorfa project that owns this resource."
          },
          {
            "name": "session",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies cursor for this query parameter."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__BanSafeIncident"
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CursorPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      },
      "post": {
        "operationId": "createBanSafeIncident",
        "tags": [
          "bansafe"
        ],
        "summary": "Report a ban",
        "description": "Records that WhatsApp restricted or banned one of your numbers. Send the same `Idempotency-Key` to retry safely for the same number; a repeat returns the original report. Reusing the key for a different number returns `409 bansafe_incident_idempotency_scope_conflict`.\n\nRequires `sessions:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "description": "Specifies idempotency key for this header parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__ReportBanSafeIncidentInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__BanSafeIncidentReceipt"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/bansafe/incidents/{incidentId}/retract": {
      "post": {
        "operationId": "retractBanSafeIncident",
        "tags": [
          "bansafe"
        ],
        "summary": "Withdraw a ban report",
        "description": "Withdraws a customer report and returns its incident record. Repeating the request returns the closed record. An incident observed from WhatsApp cannot be withdrawn and returns `409 bansafe_incident_not_a_report`. An unknown incident returns 404.\n\nAPI keys require `sessions:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "incidentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the incident."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__BanSafeIncident"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/bansafe/claims": {
      "get": {
        "operationId": "listBanSafeClaims",
        "tags": [
          "bansafe"
        ],
        "summary": "List Ban Insurance claims",
        "description": "Lists the Ban Insurance claims filed on your numbers, newest first. A claim is filed automatically when a ban is recorded on a number whose plan includes insurance; there is no request to file one.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the Polymorfa project that owns this resource."
          },
          {
            "name": "session",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "filed",
                "under_review",
                "approved",
                "denied",
                "paid",
                "reversed"
              ]
            },
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `filed` | Filed. |\n| `under_review` | Under review. |\n| `approved` | Approved. |\n| `denied` | Denied. |\n| `paid` | Paid. |\n| `reversed` | Reversed. |"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies cursor for this query parameter."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__BanSafeClaim"
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CursorPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/bansafe/claims/{claimId}": {
      "get": {
        "operationId": "getBanSafeClaim",
        "tags": [
          "bansafe"
        ],
        "summary": "Get a Ban Insurance claim",
        "description": "Returns one claim: the 30 days it covers, the credits that number consumed in them, the most the plan returns, what the claim returns, what the ban was attributed to, and the evidence counts behind that.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "claimId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the claim."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__BanSafeClaim"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/projects/{projectId}/safe-mode": {
      "get": {
        "operationId": "getProjectSafeModeCeiling",
        "tags": [
          "bansafe"
        ],
        "summary": "Get a project's Safe Mode ceiling",
        "description": "Returns the most visible sending behaviour any number in this project may use. Every setting is off by default. `entitled` reports whether the plan includes BanSafe Lite, which Safe Mode is part of, and `entitlementReason` gives the reason a raise would be refused.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ProjectSafeMode"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      },
      "put": {
        "operationId": "updateProjectSafeModeCeiling",
        "tags": [
          "bansafe"
        ],
        "summary": "Set a project's Safe Mode ceiling",
        "description": "Sets the most visible behaviour any number in this project may use. Send only the settings you want to change. Presence and read receipts are visible to the people these numbers message: turning them on makes a number appear online, exposes last seen subject to the account's privacy settings, and puts blue ticks on incoming messages. Raising a setting requires a plan that includes BanSafe Lite, and lowering one is always allowed. A signed-in caller must be an team owner, admin, or developer.\n\nRequires `sessions:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__UpdateProjectSafeModeInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ProjectSafeMode"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/platform__PaymentRequired"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "503": {
            "$ref": "#/components/responses/platform__PropagationPending"
          }
        }
      }
    },
    "/platform/sessions/{sessionId}/safe-mode": {
      "get": {
        "operationId": "getNumberSafeMode",
        "tags": [
          "bansafe"
        ],
        "summary": "Get a number's Safe Mode",
        "description": "Returns the project ceiling, this number's override, the policy in force, and what the number last reported it is running. `mismatch` is true when the two differ. `entitled` reports whether the plan includes BanSafe Lite, which Safe Mode is part of, and `entitlementReason` gives the reason a raise would be refused.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "Database session UUID or stable session slug.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |",
            "schema": {
              "$ref": "#/components/schemas/platform__SessionIdentifier"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__SessionSafeMode"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      },
      "put": {
        "operationId": "updateNumberSafeMode",
        "tags": [
          "bansafe"
        ],
        "summary": "Set a number's Safe Mode",
        "description": "Sets one number's Safe Mode. Each setting accepts `inherit` to follow the project ceiling. An override may only be equally or more conservative than the ceiling; a more visible value is refused with `safe_mode_exceeds_project_ceiling`. Raising a setting requires a plan that includes BanSafe Lite, and lowering one is always allowed. A signed-in caller must be an team owner, admin, or developer.\n\nRequires `sessions:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "Database session UUID or stable session slug.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |",
            "schema": {
              "$ref": "#/components/schemas/platform__SessionIdentifier"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__UpdateSessionSafeModeInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__SessionSafeMode"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/platform__PaymentRequired"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "503": {
            "$ref": "#/components/responses/platform__PropagationPending"
          }
        }
      }
    },
    "/platform/projects/{projectId}/warmup-plan": {
      "get": {
        "operationId": "getProjectWarmupPlanSettings",
        "tags": [
          "bansafe"
        ],
        "summary": "Get a project's warm-up plan",
        "description": "Returns whether numbers in this project have a daily allowance, the two settings that shape the ramp, the per-number daily cap it climbs to, and the projected allowance day by day. `entitled` reports whether the plan includes BanSafe Lite, which the warm-up plan is part of.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ProjectWarmupPlan"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      },
      "put": {
        "operationId": "updateProjectWarmupPlanSettings",
        "tags": [
          "bansafe"
        ],
        "summary": "Set a project's warm-up plan",
        "description": "Turns the warm-up plan on or off for a project and sets how long the ramp takes and how many messages a number may send on its first day. Send only the settings you want to change. While the plan is on, a send past a number's allowance is refused with `bansafe_daily_allowance_reached` and campaign recipients are deferred to the next reset. Turning the plan on requires a plan that includes BanSafe Lite; turning it off is always allowed. A signed-in caller must be an team owner, admin, or developer.\n\nRequires `sessions:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__UpdateProjectWarmupPlanInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ProjectWarmupPlan"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/platform__PaymentRequired"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "503": {
            "$ref": "#/components/responses/platform__PropagationPending"
          }
        }
      }
    },
    "/platform/projects/{projectId}/health-policy": {
      "get": {
        "operationId": "getProjectHealthPolicySettings",
        "tags": [
          "bansafe"
        ],
        "summary": "Get a project's health policy",
        "description": "Returns the health threshold and the actions configured for numbers in this project. Integration flags report whether email and webhook delivery are ready to use.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ProjectHealthPolicy"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      },
      "put": {
        "operationId": "updateProjectHealthPolicySettings",
        "tags": [
          "bansafe"
        ],
        "summary": "Set a project's health policy",
        "description": "Replaces the project policy when the supplied version matches the stored version. The rule applies only when an available health estimate is below the threshold; an unavailable estimate triggers no action. Stopping disconnects a session and retains its linked credentials. Logging out requires relinking.\n\nRequires `sessions:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__UpdateProjectHealthPolicyInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ProjectHealthPolicy"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/projects/{projectId}/insurance-evidence": {
      "get": {
        "operationId": "getInsuranceEvidenceSettings",
        "tags": [
          "bansafe"
        ],
        "summary": "Get a project's insurance evidence setting",
        "description": "Returns whether evidence collection about other linked devices is enabled and whether any number in the project has Ban Insurance included in its plan. Collection is off until explicitly enabled.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ProjectInsuranceEvidence"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      },
      "put": {
        "operationId": "updateInsuranceEvidenceSettings",
        "tags": [
          "bansafe"
        ],
        "summary": "Set a project's insurance evidence setting",
        "description": "Enables or disables collection of counts about other linked devices. Collection never includes messages, recipient identities, or device names. Disabling collection discards stored device evidence. A 503 `propagation_pending` means the setting was stored but a connected number has not confirmed it; retry the request. A signed-in caller must be an team owner, admin, or developer.\n\nRequires `sessions:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__UpdateProjectInsuranceEvidenceInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ProjectInsuranceEvidence"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "503": {
            "$ref": "#/components/responses/platform__PropagationPending"
          }
        }
      }
    },
    "/platform/campaigns": {
      "get": {
        "operationId": "listPlatformCampaigns",
        "tags": [
          "campaigns"
        ],
        "summary": "List campaigns",
        "description": "Lists campaigns in the selected project, including each campaign's stored send window and delivery counts.\n\nRequires `campaigns:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the Polymorfa project that owns this resource."
          },
          {
            "name": "projectSlug",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies project slug for this query parameter."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__PlatformCampaign"
                      },
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      },
      "post": {
        "operationId": "createPlatformCampaign",
        "tags": [
          "campaigns"
        ],
        "summary": "Create campaign",
        "description": "Creates a draft campaign on any plan. `messagesArray` holds up to 10 composed messages, with each `delayAfterSec` from 0 to 86400, or 2592000 for a drip. `drip` requires the default-off drip sequences beta (`403 feature_unavailable`). Only an unlaunched draft can change drip settings, except a running or paused continuous drip can close enrollment by setting enrollment to audience with the same exit settings. `senderConfig.sessionIds` may name numbers that are not yet on a plan that includes Campaigns; launch checks the selection. `templateId` must name a template in the campaign's project, and a malformed `variableMapping` answers `400 invalid_parameter` naming the field. It is refused with `403 bansafe_org_suspended` while the team is suspended, `400 invalid_parameter` when `senderConfig.sessionIds` is malformed, and `400 campaign_throughput_capped` when a per-number cap is above its safety ceiling. Setting `trackedLinks` requires the campaign link tracking beta and otherwise answers `403 feature_unavailable`. `variants` and `variantStrategy` make an A/B test, a beta: without enrollment it answers `403 feature_unavailable`, and a template with variants answers `400 invalid_parameter`.\n\nRequires `campaigns:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__CreatePlatformCampaignRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__PlatformCampaign"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/campaigns/{campaignId}": {
      "get": {
        "operationId": "getPlatformCampaign",
        "tags": [
          "campaigns"
        ],
        "summary": "Get campaign",
        "description": "Returns one campaign and its stored send window, or null when no matching campaign exists in the selected project.\n\nRequires `campaigns:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the campaign."
          },
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "description": "Project the campaign belongs to. Required with a team API key; a project token is bound to its own project and omits it.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "anyOf": [
                        {
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/platform__PlatformCampaign"
                            }
                          ]
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Structured data carried by this object.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `id`, `name`, `status`, `templateId`, `recipientListId`, `recipientCount`, `sentCount`, `deliveredCount`, `readCount`, `failedCount`, `skippedCount`, `scheduledAt`, `launchedAt`, `completedAt`, `createdAt`, `updatedAt`, `sendWindow`, `trackedLinks`, `experimentOutcome`, `frequencyCap`, `followUp`, `drip`, `enrollmentOpen`, `pauseReason` |\n| Alternative 2 | `null` |"
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      },
      "patch": {
        "operationId": "updateCampaign",
        "tags": [
          "campaigns"
        ],
        "summary": "Update campaign",
        "description": "Updates a campaign. A PATCH containing only `drip` that closes a running or paused continuous drip to audience enrollment with unchanged exit settings is allowed without beta access. Other non-null drip settings require the beta. `messagesArray` follows the same sequence rules as create. On an unlaunched draft, a new `senderConfig` passes the same checks as create and plans are checked at launch. Once the campaign has launched, including a scheduled launch that has not started, a new `senderConfig` passes the launch checks and can answer `402 campaigns_not_entitled` or `400 invalid_parameter`. `recipientListId` points the campaign at another audience while it is still an unlaunched draft and replaces its existing recipients; after launch it answers `409`. `templateId`, `variableMapping`, `messagesArray` and `composerBlueprint` also change only while the campaign is an unlaunched draft; after launch a different value answers `409`, and the stored value is accepted. A sender edit to a draft that launches while the edit is being saved also answers `409`. A changed `scheduledAt` after launch answers `409`; use reschedule to move a scheduled start. A non-null `scheduledAt` must be integer Unix milliseconds from zero through the JavaScript Date maximum. `sendWindow` changes only while the campaign is a draft or paused; a running campaign answers `409`, so pause it first. An edit to a paused campaign also answers `409` while sends are in progress; retry after they settle. A stalled send that has not reached the provider can be recovered on a later edit attempt. If delivery may have started, the edit waits for a definite result rather than sending the recipient again. A new window applies to the remaining recipients when the campaign resumes. `trackedLinks` changes only while the campaign is a draft, including while it waits for a scheduled start; afterwards it answers `409`. Setting tracked links requires the campaign link tracking beta and otherwise answers `403 feature_unavailable`. A launched campaign must still define every `{{link:<key>}}` its messages reference.\n\nRequires `campaigns:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the campaign."
          },
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "description": "Project the campaign belongs to. Required with a team API key; a project token is bound to its own project and omits it.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__UpdatePlatformCampaignRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__PlatformCampaign"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/platform__PaymentRequired"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          },
          "503": {
            "$ref": "#/components/responses/platform__CampaignEligibilityUnavailable"
          }
        }
      },
      "delete": {
        "operationId": "deleteCampaign",
        "tags": [
          "campaigns"
        ],
        "summary": "Delete campaign",
        "description": "Deletes a draft, completed, failed, cancelled or archived campaign. Any other campaign is refused with `409`; stop it first. A completed or failed campaign with a final event pending delivery or an active delivery run is also refused with `409`; retry after both finish.\n\nRequires `campaigns:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the campaign."
          },
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "description": "Project the campaign belongs to. Required with a team API key; a project token is bound to its own project and omits it.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "removed"
                      ],
                      "properties": {
                        "removed": {
                          "type": "boolean",
                          "enum": [
                            true
                          ],
                          "description": "Whether removed.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
                        }
                      },
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/campaigns/{campaignId}/launch": {
      "post": {
        "operationId": "launchPlatformCampaign",
        "tags": [
          "campaigns"
        ],
        "summary": "Launch campaign",
        "description": "Starts a draft campaign. It begins sending at `scheduledAt`, or right away when no start time is set. Launch checks the stored sender selection against live plans: `402 campaigns_not_entitled` when a selected number is missing or its plan does not include Campaigns, or when an unselected campaign's project has no such number; `400 invalid_parameter` on `senderConfig.sessionIds` when a selected number is not connected or the selection mixes sending types; `400 campaign_throughput_capped` when a requested throughput is above its ceiling. A segment campaign requires a team API key or signed-in dashboard session; project tokens answer `403 permission_denied`. Both audience betas must be available, otherwise launch answers `403 feature_unavailable`. An audience change while launch is being authorized answers `409 state_conflict`. Segment evaluation that exceeds its time limit also answers `409 state_conflict`; simplify the rules and retry. A launched campaign whose segment was deleted remains launched and cannot be launched again (`409 state_conflict`). A drip without a sendable composed message answers `400 invalid_parameter` on `messagesArray`. Saving a draft does not apply this check. A composed attachment requires a public `media.url` (`400 invalid_parameter`). The template must be complete (`400 invalid_parameter`) and approved on every Cloud API number (`400 template_not_approved`). Every recipient needs a value or fallback for each variable (`422 campaign_variables_missing`); `skipMissingVariables: true` skips those recipients before the first send. A message that references a `{{link:<key>}}` the campaign does not define, or tracked links on a campaign that would send from Official API numbers, answers `400 invalid_parameter` on `trackedLinks`; tracked links without the campaign link tracking beta answer `403 feature_unavailable`. `409` means the campaign is not a draft, is already launched and waiting for its start time, or its sending numbers changed during the launch. When the team requires approval above a recipient threshold and the launch would send to more recipients, a launch by anyone other than a team owner or admin signed in to the console answers `409 campaign_approval_required`, sends nothing, and records a pending approval request that `GET /platform/campaigns/{campaignId}/approvals` lists. Launching again with the campaign unchanged returns the same request. A launch requested by an AI agent through the hosted MCP server is held the same way, whatever the threshold.\n\nRequires `campaigns:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the campaign."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Optional unique key, 1 to 255 bytes, that makes this request safe to retry for 24 hours. A retry with the same key, credential, `Polymorfa-Version` and request never runs it again: it returns `409 idempotency_completed` when the original succeeded, or the original server error. Reusing the key for a different request returns `409 idempotency_conflict`; a retry while the original is still running returns `409 idempotency_in_progress`, and a retry after an unrecorded outcome returns `409 idempotency_outcome_unknown`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__LaunchPlatformCampaignRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": true,
                      "required": [
                        "id",
                        "status",
                        "operationId"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "draft",
                            "running",
                            "paused",
                            "cancelling",
                            "cancelled",
                            "completed",
                            "failed",
                            "archived"
                          ],
                          "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `draft` | Draft. |\n| `running` | Running. |\n| `paused` | Paused. |\n| `cancelling` | Cancelling. |\n| `cancelled` | Cancelled. |\n| `completed` | Completed. |\n| `failed` | Failed. |\n| `archived` | Archived. |"
                        },
                        "operationId": {
                          "type": "string",
                          "format": "uuid",
                          "description": "The operation that carries this lifecycle action.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                        }
                      },
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/platform__PaymentRequired"
          },
          "403": {
            "$ref": "#/components/responses/platform__CampaignLaunchForbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__CampaignLaunchConflict"
          },
          "422": {
            "$ref": "#/components/responses/platform__CampaignVariablesMissing"
          },
          "503": {
            "$ref": "#/components/responses/platform__CampaignEligibilityUnavailable"
          }
        }
      }
    },
    "/platform/campaigns/{campaignId}/pause": {
      "post": {
        "operationId": "pausePlatformCampaign",
        "tags": [
          "campaigns"
        ],
        "summary": "Pause campaign",
        "description": "Pauses a running campaign. Sends already in progress can still finish. `409` means the campaign is not running or has no active delivery run to pause.\n\nRequires `campaigns:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the campaign."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Optional unique key, 1 to 255 bytes, that makes this request safe to retry for 24 hours. A retry with the same key, credential, `Polymorfa-Version` and request never runs it again: it returns `409 idempotency_completed` when the original succeeded, or the original server error. Reusing the key for a different request returns `409 idempotency_conflict`; a retry while the original is still running returns `409 idempotency_in_progress`, and a retry after an unrecorded outcome returns `409 idempotency_outcome_unknown`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": true,
                      "required": [
                        "id",
                        "status",
                        "operationId"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "draft",
                            "running",
                            "paused",
                            "cancelling",
                            "cancelled",
                            "completed",
                            "failed",
                            "archived"
                          ],
                          "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `draft` | Draft. |\n| `running` | Running. |\n| `paused` | Paused. |\n| `cancelling` | Cancelling. |\n| `cancelled` | Cancelled. |\n| `completed` | Completed. |\n| `failed` | Failed. |\n| `archived` | Archived. |"
                        },
                        "operationId": {
                          "type": "string",
                          "format": "uuid",
                          "description": "The operation that carries this lifecycle action.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                        }
                      },
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/campaigns/{campaignId}/resume": {
      "post": {
        "operationId": "resumePlatformCampaign",
        "tags": [
          "campaigns"
        ],
        "summary": "Resume campaign",
        "description": "Resumes a paused campaign. Its remaining recipients are sent after the same checks as before the pause. `409` means the campaign is not paused or has no active delivery run to resume. A request through the hosted MCP server answers `409 campaign_approval_required`, changes nothing, and records an approval request that a team owner or admin approves in the console.\n\nRequires `campaigns:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the campaign."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Optional unique key, 1 to 255 bytes, that makes this request safe to retry for 24 hours. A retry with the same key, credential, `Polymorfa-Version` and request never runs it again: it returns `409 idempotency_completed` when the original succeeded, or the original server error. Reusing the key for a different request returns `409 idempotency_conflict`; a retry while the original is still running returns `409 idempotency_in_progress`, and a retry after an unrecorded outcome returns `409 idempotency_outcome_unknown`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": true,
                      "required": [
                        "id",
                        "status",
                        "operationId"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "draft",
                            "running",
                            "paused",
                            "cancelling",
                            "cancelled",
                            "completed",
                            "failed",
                            "archived"
                          ],
                          "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `draft` | Draft. |\n| `running` | Running. |\n| `paused` | Paused. |\n| `cancelling` | Cancelling. |\n| `cancelled` | Cancelled. |\n| `completed` | Completed. |\n| `failed` | Failed. |\n| `archived` | Archived. |"
                        },
                        "operationId": {
                          "type": "string",
                          "format": "uuid",
                          "description": "The operation that carries this lifecycle action.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                        }
                      },
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/campaigns/{campaignId}/stop": {
      "post": {
        "operationId": "stopPlatformCampaign",
        "tags": [
          "campaigns"
        ],
        "summary": "Stop campaign",
        "description": "Cancels a draft, running or paused campaign. Recipients not yet sent are not sent. The campaign moves to `cancelling` and then to `cancelled` once sends already in progress finish; a campaign with no active delivery run is `cancelled` immediately and `operationId` is null. `409` means the campaign is already finished or cancelled.\n\nRequires `campaigns:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the campaign."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Optional unique key, 1 to 255 bytes, that makes this request safe to retry for 24 hours. A retry with the same key, credential, `Polymorfa-Version` and request never runs it again: it returns `409 idempotency_completed` when the original succeeded, or the original server error. Reusing the key for a different request returns `409 idempotency_conflict`; a retry while the original is still running returns `409 idempotency_in_progress`, and a retry after an unrecorded outcome returns `409 idempotency_outcome_unknown`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": true,
                      "required": [
                        "id",
                        "status",
                        "operationId"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "draft",
                            "running",
                            "paused",
                            "cancelling",
                            "cancelled",
                            "completed",
                            "failed",
                            "archived"
                          ],
                          "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `draft` | Draft. |\n| `running` | Running. |\n| `paused` | Paused. |\n| `cancelling` | Cancelling. |\n| `cancelled` | Cancelled. |\n| `completed` | Completed. |\n| `failed` | Failed. |\n| `archived` | Archived. |"
                        },
                        "operationId": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "format": "uuid",
                          "description": "The operation that stops the campaign. Null when the campaign had no active delivery run and was cancelled immediately.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                        }
                      },
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/campaigns/{campaignId}/reschedule": {
      "post": {
        "operationId": "reschedulePlatformCampaign",
        "tags": [
          "campaigns"
        ],
        "summary": "Reschedule campaign",
        "description": "Moves the start of a launched campaign that is still waiting for it. Set `scheduledAt` to a later or earlier time, or to `null` to start now. The response returns the campaign with its new `scheduledAt`; sending the current start time again changes nothing. A suspended team is refused with `403 bansafe_org_suspended`. `409` means the campaign has already started, is finished or being stopped, or was never launched; launch a draft with `scheduledAt` instead. A request through the hosted MCP server answers `409 campaign_approval_required`, changes nothing, and records an approval request that a team owner or admin approves in the console.\n\nRequires `campaigns:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the campaign."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Optional unique key, 1 to 255 bytes, that makes this request safe to retry for 24 hours. A retry with the same key, credential, `Polymorfa-Version` and request never runs it again: it returns `409 idempotency_completed` when the original succeeded, or the original server error. Reusing the key for a different request returns `409 idempotency_conflict`; a retry while the original is still running returns `409 idempotency_in_progress`, and a retry after an unrecorded outcome returns `409 idempotency_outcome_unknown`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__ReschedulePlatformCampaignRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": true,
                      "required": [
                        "id",
                        "status",
                        "operationId"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "draft",
                            "running",
                            "paused",
                            "cancelling",
                            "cancelled",
                            "completed",
                            "failed",
                            "archived"
                          ],
                          "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `draft` | Draft. |\n| `running` | Running. |\n| `paused` | Paused. |\n| `cancelling` | Cancelling. |\n| `cancelled` | Cancelled. |\n| `completed` | Completed. |\n| `failed` | Failed. |\n| `archived` | Archived. |"
                        },
                        "operationId": {
                          "type": "string",
                          "format": "uuid",
                          "description": "The operation that carries this lifecycle action.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                        }
                      },
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/campaigns/{campaignId}/archive": {
      "post": {
        "operationId": "archiveCampaign",
        "tags": [
          "campaigns"
        ],
        "summary": "Archive campaign",
        "description": "Archives a completed, failed or cancelled campaign. Other states return `409`. A final event pending delivery or an active delivery run also returns `409`; retry after both finish.\n\nRequires `campaigns:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the campaign."
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/campaigns/{campaignId}/duplicate": {
      "post": {
        "operationId": "duplicateCampaign",
        "tags": [
          "campaigns"
        ],
        "summary": "Duplicate campaign",
        "description": "Creates a new draft from a campaign. Segment campaigns require a team API key or signed-in dashboard session; project tokens answer `403 permission_denied`. Both audience betas must be available, otherwise duplication answers `403 feature_unavailable`. The copy evaluates the saved segment again at launch and never copies its frozen recipients. If the segment was deleted, answers `409 state_conflict`; create a new campaign and choose an audience. An audience change during duplication also answers `409 state_conflict`.\n\nRequires `campaigns:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the campaign."
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__PlatformCampaign"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/campaigns/{campaignId}/requeue": {
      "post": {
        "operationId": "requeueFailedCampaign",
        "tags": [
          "campaigns"
        ],
        "summary": "Requeue failed campaign",
        "description": "Public Management API. Requires `campaigns:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the campaign."
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__DataEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/campaigns/{campaignId}/enrollments": {
      "post": {
        "operationId": "enrollCampaignContact",
        "tags": [
          "campaigns"
        ],
        "summary": "Enroll a contact in a drip",
        "description": "Beta. Adds one contact to a running or paused continuous drip. Requires campaigns:manage and the drip beta; otherwise 403 feature_unavailable. Idempotent per phone, including contacts who completed or exited: returns created=false without changing variables. Opted-out contacts are skipped. A campaign not accepting enrollment answers 409 state_conflict.\n\nRequires `campaigns:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the campaign."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__EnrollCampaignContactRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CampaignEnrollment"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/campaigns/{campaignId}/test-send": {
      "post": {
        "operationId": "testSendPlatformCampaign",
        "tags": [
          "campaigns"
        ],
        "summary": "Send a test of a draft campaign",
        "description": "Requires campaigns:manage and campaigns:read because the test can use stored recipient samples. Sends one copy of a draft campaign's content to a seed recipient, through the same rendering, sending and BanSafe checks as a launched campaign. The seed recipient must be a number connected to your team. The sending number must be connected, on a plan that includes Campaigns and, when the campaign selects numbers, one of them. A test is not a campaign recipient and is not counted in the campaign's statistics or webhooks. A team can send 20 tests an hour, and at most 5 an hour to one seed recipient. `429` means one of these limits was reached or BanSafe is pacing the sending number; follow `Retry-After`. `409 bansafe_cold_held` means the seed recipient has never written to the sending number and the campaign holds first messages. `409 state_conflict` means the campaign is not a draft or has A/B or weighted content alternatives, the sending number is a Hybrid Link number, or the seed recipient opted out. `504 result_unknown` means the outcome was not received in time and the test may still arrive. Send `projectId` in the body when using a team API key. `422 campaign_variables_missing` means the test's sample values, the mapped recipient value and the fallback all leave a variable in the campaign content empty.\n\nRequires `campaigns:manage` and `campaigns:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the campaign."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Optional unique key, 1 to 255 bytes, that makes this request safe to retry for 24 hours. A retry with the same key, credential, `Polymorfa-Version` and request never runs it again: it returns `409 idempotency_completed` when the original succeeded, or the original server error. Reusing the key for a different request returns `409 idempotency_conflict`; a retry while the original is still running returns `409 idempotency_in_progress`, and a retry after an unrecorded outcome returns `409 idempotency_outcome_unknown`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__CampaignTestSendRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CampaignTestSend"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/platform__PaymentRequired"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          },
          "422": {
            "$ref": "#/components/responses/platform__CampaignVariablesMissing"
          },
          "429": {
            "$ref": "#/components/responses/platform__RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/platform__UpstreamFailure"
          },
          "503": {
            "$ref": "#/components/responses/platform__SendPathUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/platform__ResultUnknown"
          }
        }
      }
    },
    "/platform/campaign-reply-flows": {
      "post": {
        "operationId": "createPlatformCampaignReplyFlow",
        "tags": [
          "campaigns"
        ],
        "summary": "Create campaign reply flow",
        "description": "Creates an immutable reply flow revision: the steps a campaign runs when a recipient replies. Each step can send a text, reply buttons, a list, or a Flow form (Official numbers only), and branches on the button or list row chosen, an exact keyword, or a Flow form submission. Beta: returns `403` unless campaign reply flows are enabled for the team. `409` means this flow key and revision already exist.\n\nRequires `campaigns:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__CreatePlatformCampaignReplyFlowRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__PlatformCampaignReplyFlow"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/campaign-reply-flows/{replyFlowId}": {
      "get": {
        "operationId": "getPlatformCampaignReplyFlow",
        "tags": [
          "campaigns"
        ],
        "summary": "Get campaign reply flow",
        "description": "Gets one reply flow revision in a project. Beta: returns `403` unless campaign reply flows are enabled for the team.\n\nRequires `campaigns:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "replyFlowId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the reply flow."
          },
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the Polymorfa project that owns this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__PlatformCampaignReplyFlow"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/campaigns/{campaignId}/reply-flow": {
      "put": {
        "operationId": "setPlatformCampaignReplyFlow",
        "tags": [
          "campaigns"
        ],
        "summary": "Set campaign reply flow",
        "description": "Attaches a reply flow revision to a draft or scheduled campaign, or detaches it with `null`. The flow starts for each recipient once their message is sent. `409` means the campaign has already launched. Beta: returns `403` unless campaign reply flows are enabled for the team.\n\nRequires `campaigns:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the campaign."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__SetPlatformCampaignReplyFlowRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "campaignId",
                        "replyFlowId"
                      ],
                      "properties": {
                        "campaignId": {
                          "type": "string",
                          "format": "uuid",
                          "description": "Identifier for the campaign.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                        },
                        "replyFlowId": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "format": "uuid",
                          "description": "Identifier for the reply flow.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                        }
                      },
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/campaigns/{campaignId}/analytics": {
      "get": {
        "operationId": "getPlatformCampaignAnalytics",
        "tags": [
          "campaigns"
        ],
        "summary": "Get campaign analytics",
        "description": "Returns the campaign's delivery funnel, reply timing, for an A/B campaign results by variant with the saved outcome, and a separate follow-up report. Follow-up counts never change the first-message counts.\n\nRequires `campaigns:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the campaign."
          },
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "description": "Project the campaign belongs to. Required with a team API key; a project token is bound to its own project and omits it.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__PlatformCampaignAnalytics"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/campaigns/{campaignId}/events": {
      "get": {
        "operationId": "listCampaignEvents",
        "tags": [
          "campaigns"
        ],
        "summary": "List campaign events",
        "description": "Public Management API. Requires `campaigns:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the campaign."
          },
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "description": "Project the campaign belongs to. Required with a team API key; a project token is bound to its own project and omits it.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__DataEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/campaigns/{campaignId}/recipients": {
      "get": {
        "operationId": "listCampaignRecipients",
        "tags": [
          "campaigns"
        ],
        "summary": "List campaign recipients",
        "description": "Lists a campaign's recipients in queue order with cursor pagination. Filter by `status`, by `reason`, or both: for example `status=skipped&reason=opted_out` lists recipients skipped because the number opted out. `failureReason` gives the stable reason a recipient was not sent.\n\nRequires `campaigns:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the campaign."
          },
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "description": "Project the campaign belongs to. Required with a team API key; a project token is bound to its own project and omits it.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |",
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Project that owns the campaign. Required for team API keys; a project token is bound to its own project."
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "queued",
                "sending",
                "sent",
                "delivered",
                "read",
                "failed",
                "skipped"
              ]
            },
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `queued` | Queued. |\n| `sending` | Sending. |\n| `sent` | Sent. |\n| `delivered` | Delivered. |\n| `read` | Read. |\n| `failed` | Failed. |\n| `skipped` | Skipped. |"
          },
          {
            "name": "reason",
            "in": "query",
            "required": false,
            "description": "Only recipients whose `failureReason` is this code.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `opted_out` | Opted out. |\n| `cold_held` | Cold held. |\n| `campaign_cancelled` | Campaign cancelled. |\n| `invalid_recipient` | Invalid recipient. |\n| `session_not_connected` | Session not connected. |\n| `ack_timeout` | Ack timeout. |\n| `blocked_by_safety` | Blocked by safety. |\n| `send_failed` | Send failed. |\n| `missing_variable` | Missing variable. |\n| `frequency_cap` | Frequency cap. |\n| `other` | Other. |",
            "schema": {
              "$ref": "#/components/schemas/platform__CampaignRecipientFailureReason"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "description": "Specifies cursor for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__CampaignRecipient"
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CursorPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      },
      "post": {
        "operationId": "addCampaignRecipients",
        "tags": [
          "campaigns"
        ],
        "summary": "Add recipients to a draft campaign",
        "description": "Adds up to 1,000 recipients to a campaign that has not been launched. A number already on the campaign is skipped. Invalid entries are reported, not added. A campaign that has been launched answers `409`. Send `projectId` in the body when using a team API key.\n\nRequires `campaigns:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the campaign."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Optional key, 1 to 255 bytes of UTF-8, that makes this request safe to retry for 24 hours. A retry with the same key, credential, `Polymorfa-Version` and request is not applied again: it returns `200` with `Idempotent-Replayed: true` and the replay result described for this operation. Reusing the key for a different request returns `409 idempotency_conflict`. A retry sent while the original is still running waits for it and then returns its result. A request that failed left no record, so retrying it with the same key runs it again. Access to the resource is checked again on every retry. A replay returns the original counts, even after the campaign has launched.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "projectId": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                  },
                  "recipients": {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 1000,
                    "description": "At most 1,000 recipients per request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `1000` items |",
                    "items": {
                      "$ref": "#/components/schemas/platform__RecipientInput"
                    }
                  }
                },
                "required": [
                  "recipients"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              },
              "Idempotent-Replayed": {
                "description": "`true` when this response replays the result of an earlier request with the same Idempotency-Key.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "true"
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CampaignRecipientAppendResult"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/campaigns/{campaignId}/recipients/export": {
      "get": {
        "operationId": "exportCampaignRecipients",
        "tags": [
          "campaigns"
        ],
        "summary": "Export campaign recipients",
        "description": "Returns recipients as CSV in queue order. Unfiltered exports page up to 1,000 recipients per request, using the `Polymorfa-Next-Cursor` response header. Each page starts with a header row and reflects outcomes when requested. Filtered exports are one atomic page of up to 1,000 recipients; larger filtered results return 409, so changing statuses cannot silently omit matches between pages. The export contains outcomes and `failureReason` codes only, never message content or template variables.\n\nRequires `campaigns:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the campaign."
          },
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "description": "Project the campaign belongs to. Required with a team API key; a project token is bound to its own project and omits it.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |",
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Project that owns the campaign. Required for team API keys; a project token is bound to its own project."
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "queued",
                "sending",
                "sent",
                "delivered",
                "read",
                "failed",
                "skipped"
              ]
            },
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `queued` | Queued. |\n| `sending` | Sending. |\n| `sent` | Sent. |\n| `delivered` | Delivered. |\n| `read` | Read. |\n| `failed` | Failed. |\n| `skipped` | Skipped. |"
          },
          {
            "name": "reason",
            "in": "query",
            "required": false,
            "description": "Only recipients whose `failureReason` is this code.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `opted_out` | Opted out. |\n| `cold_held` | Cold held. |\n| `campaign_cancelled` | Campaign cancelled. |\n| `invalid_recipient` | Invalid recipient. |\n| `session_not_connected` | Session not connected. |\n| `ack_timeout` | Ack timeout. |\n| `blocked_by_safety` | Blocked by safety. |\n| `send_failed` | Send failed. |\n| `missing_variable` | Missing variable. |\n| `frequency_cap` | Frequency cap. |\n| `other` | Other. |",
            "schema": {
              "$ref": "#/components/schemas/platform__CampaignRecipientFailureReason"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256,
              "description": "The `Polymorfa-Next-Cursor` value from the previous unfiltered page. Filtered exports cannot be paged."
            },
            "description": "Specifies cursor for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1000,
              "default": 1000,
              "description": "Recipients per unfiltered page, up to 1,000. Filtered exports require 1,000."
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `1000` (inclusive) |"
          }
        ],
        "responses": {
          "200": {
            "description": "One CSV page.",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              },
              "Polymorfa-Next-Cursor": {
                "schema": {
                  "type": "string"
                },
                "description": "Cursor for the next page. Absent on the last page."
              }
            },
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string",
                  "description": "Header row, then one row per recipient. Columns: recipientId, phone, status, failureReason, attempts, variantKey, queuedAt, sentAt, deliveredAt, readAt, failedAt, respondedAt. Times are ISO 8601 in UTC. Empty fields are null. Text that begins with =, +, -, @, tab or carriage return is prefixed with an apostrophe, including phone numbers in international format. Machine readers should remove that leading apostrophe from phone cells."
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/campaigns/{campaignId}/links": {
      "get": {
        "operationId": "getCampaignLinks",
        "tags": [
          "campaigns"
        ],
        "summary": "Get tracked link opens",
        "description": "Beta: requires team enrollment in campaign link tracking. Returns opens of each tracked link in the campaign's link order. An open is a request to the short link from a person, or from an app or security scanner previewing the link; it is not proof of a click. `uniqueOpens` counts recipients who opened the link at least once; `totalOpens` counts every open. A team without the beta answers `403 feature_unavailable`.\n\nRequires `campaigns:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the campaign."
          },
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "description": "Project the campaign belongs to. Required with a team API key; a project token is bound to its own project and omits it.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__CampaignTrackedLinkReport"
                      },
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/campaigns/{campaignId}/approvals": {
      "get": {
        "operationId": "listCampaignLaunchApprovals",
        "tags": [
          "campaigns"
        ],
        "summary": "List campaign launch approvals",
        "description": "Lists a campaign's approval requests, newest first, at most 20. A request is created when a launch is held by the team's approval threshold, or when an AI agent asks through the hosted MCP server to launch, resume or move the start (`reasons` says which). `action` is the requested step. It records the frozen recipient count and the requested start time. `status` is `pending` until a team owner or admin approves or rejects it, `superseded` when a later launch request or a change to the campaign replaced it, and `expired` 72 hours after it was requested.\n\nRequires `campaigns:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the campaign."
          },
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "description": "Project the campaign belongs to. Required with a team API key; a project token is bound to its own project and omits it.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__CampaignLaunchApproval"
                      },
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/campaign-settings": {
      "get": {
        "operationId": "getCampaignSettings",
        "tags": [
          "campaign-settings"
        ],
        "summary": "Get campaign settings",
        "description": "Returns the team's campaign settings. `launchApproval.recipientThreshold` is the number of recipients above which a launch needs a team owner or admin; null means no launch needs approval. A team that never saved settings receives `launchApproval.recipientThreshold: null`.\n\nAPI keys require `campaigns:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CampaignSettings"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/campaign-settings/frequency-cap": {
      "get": {
        "operationId": "getCampaignFrequencyCap",
        "tags": [
          "campaign-settings"
        ],
        "summary": "Get the contact frequency cap",
        "description": "Returns the team's contact frequency cap: the most campaign messages one phone number receives from the team in any rolling 24 hours and any rolling 7 days. Every campaign message counts, first messages and later messages of a sequence, from every campaign, project and number in the team. Test sends and messages sent outside campaigns do not count. `null` means no limit for that window. A team that never saved a cap receives both limits `null` and `revision` 0. A campaign can set its own, stricter cap with `frequencyCap`. Accepts a team API key or a live signed-in team member.\n\nAPI keys require `campaigns:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CampaignFrequencyCapSettings"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      },
      "put": {
        "operationId": "updateCampaignFrequencyCap",
        "tags": [
          "campaign-settings"
        ],
        "summary": "Update the contact frequency cap",
        "description": "Replaces the team's contact frequency cap using the `revision` you read; a changed revision answers `409`. Send `null` for a window to remove its limit, or both `null` to remove the cap. Setting a limit requires the contact frequency caps beta and otherwise answers `403 feature_unavailable`; removing the cap does not. Requires a team API key or a signed-in team owner or admin; project tokens answer `403`. A message over the cap is skipped with `frequency_cap_exceeded`; a later sequence message stops that recipient's remaining sequence. Settled skips are never retried when a cap changes.\n\nAPI keys require `campaigns:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__UpdateCampaignFrequencyCapInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CampaignFrequencyCapSettings"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/audiences": {
      "get": {
        "operationId": "listAudiences",
        "tags": [
          "audiences"
        ],
        "summary": "List audiences",
        "description": "Public Management API. API keys require `campaigns:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__DataEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      },
      "post": {
        "operationId": "createAudience",
        "tags": [
          "audiences"
        ],
        "summary": "Create an audience",
        "description": "Creates an audience from inline `members` (at most 1,000) or from an uploaded CSV file (`fileId` + `mapping`). Numbers are normalized to E.164 and repeated numbers are kept once. A file import accepts at most 100,000 data rows; a larger file is refused with `413` and must be split. The response reports how many rows were invalid, with up to 20 samples. `recipientCount` is the number of stored members; any client-supplied count is ignored. If your team deleted an audience profile for one of these numbers in the last 30 days, the request returns `409` naming the row (numbered as in `invalidRows`), and nothing is added.\n\nAPI keys require `campaigns:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Optional key, 1 to 255 bytes of UTF-8, that makes this request safe to retry for 24 hours. A retry with the same key, credential, `Polymorfa-Version` and request is not applied again: it returns `200` with `Idempotent-Replayed: true` and the replay result described for this operation. Reusing the key for a different request returns `409 idempotency_conflict`. A retry sent while the original is still running waits for it and then returns its result. A request that failed left no record, so retrying it with the same key runs it again. Access to the resource is checked again on every retry. A replay returns the audience as it is now, with the original import counts. If the audience was deleted after the original request, a replay returns `409 idempotency_completed`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__CreateAudienceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              },
              "Idempotent-Replayed": {
                "description": "`true` when this response replays the result of an earlier request with the same Idempotency-Key.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "true"
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__AudienceImportResult"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          },
          "413": {
            "$ref": "#/components/responses/platform__PayloadTooLarge"
          }
        }
      }
    },
    "/platform/audiences/from-campaign": {
      "post": {
        "operationId": "createAudienceFromCampaign",
        "tags": [
          "audiences"
        ],
        "summary": "Create an audience from a campaign",
        "description": "Creates an audience from the recipients of a previous campaign that had one `outcome`, to send them a follow-up campaign. The members are a snapshot taken when the request runs: later receipts, reads or replies on the source campaign do not change the audience. Numbers on the team's opt-out list are left out and counted in `optedOutCount`; each member keeps the template variables it had on the source campaign. Outcomes: `delivered` (the device confirmed delivery), `not_delivered` (sent, with no delivery confirmation), `read`, `not_read` (sent and not read, including sends never delivered), `replied`, `not_replied` (sent and no reply was attributed), and `failed` (confirmed failed sends; sends whose outcome is uncertain, such as a timeout waiting for WhatsApp, are excluded). Read outcomes depend on the recipient's read receipts. `404` means the campaign is not in your team (or not in `projectId` when given); `409` means no recipient that is not opted out has the outcome, and nothing is created.\n\nAPI keys require `campaigns:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200,
                    "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `200` characters |"
                  },
                  "campaignId": {
                    "type": "string",
                    "format": "uuid",
                    "description": "The campaign whose recipients are selected.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                  },
                  "projectId": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Optional. When given, the campaign must belong to this project.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                  },
                  "outcome": {
                    "type": "string",
                    "enum": [
                      "delivered",
                      "not_delivered",
                      "read",
                      "not_read",
                      "replied",
                      "not_replied",
                      "failed"
                    ],
                    "description": "Specifies outcome for this schema.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `delivered` | Delivered. |\n| `not_delivered` | Not delivered. |\n| `read` | Read. |\n| `not_read` | Not read. |\n| `replied` | Replied. |\n| `not_replied` | Not replied. |\n| `failed` | Failed. |"
                  }
                },
                "required": [
                  "name",
                  "campaignId",
                  "outcome"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__AudienceFromCampaignResult"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/audiences/{listId}": {
      "get": {
        "operationId": "getAudience",
        "tags": [
          "audiences"
        ],
        "summary": "Get audience",
        "description": "Public Management API. API keys require `campaigns:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "listId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the list."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__DataEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      },
      "delete": {
        "operationId": "deleteAudience",
        "tags": [
          "audiences"
        ],
        "summary": "Delete audience",
        "description": "Public Management API. API keys require `campaigns:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "listId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the list."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__DataEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/audiences/uploads": {
      "post": {
        "operationId": "createAudienceUploadUrl",
        "tags": [
          "audiences"
        ],
        "summary": "Create audience upload url",
        "description": "Public Management API. API keys require `campaigns:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__DataEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/audiences/{listId}/members": {
      "post": {
        "operationId": "addAudienceMembers",
        "tags": [
          "audiences"
        ],
        "summary": "Add audience members",
        "description": "Adds up to 1,000 members to an audience. A number already in the audience is skipped. Invalid entries are reported, not added. If your team deleted an audience profile for one of these numbers in the last 30 days, the request returns `409` naming the row (numbered as in `invalidRows`), and nothing is added.\n\nAPI keys require `campaigns:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "listId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the list."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Optional key, 1 to 255 bytes of UTF-8, that makes this request safe to retry for 24 hours. A retry with the same key, credential, `Polymorfa-Version` and request is not applied again: it returns `200` with `Idempotent-Replayed: true` and the replay result described for this operation. Reusing the key for a different request returns `409 idempotency_conflict`. A retry sent while the original is still running waits for it and then returns its result. A request that failed left no record, so retrying it with the same key runs it again. Access to the resource is checked again on every retry. A replay returns the original counts. The audience must still exist.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "members": {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 1000,
                    "description": "At most 1,000 members per request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `1000` items |",
                    "items": {
                      "$ref": "#/components/schemas/platform__RecipientInput"
                    }
                  }
                },
                "required": [
                  "members"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              },
              "Idempotent-Replayed": {
                "description": "`true` when this response replays the result of an earlier request with the same Idempotency-Key.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "true"
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__AudienceMemberAppendResult"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      },
      "get": {
        "operationId": "listAudienceMembers",
        "tags": [
          "audiences"
        ],
        "summary": "List audience members",
        "description": "Lists an audience's members in the order they were added, with cursor pagination.\n\nAPI keys require `campaigns:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "listId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the list."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "description": "Specifies cursor for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__AudienceMember"
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CursorPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/audiences/{listId}/members/{phone}": {
      "delete": {
        "operationId": "deleteAudienceMember",
        "tags": [
          "audiences"
        ],
        "summary": "Remove an audience member",
        "description": "Removes one member by phone number. The number is normalized the same way as on import. Campaigns that already launched keep the recipients they copied.\n\nAPI keys require `campaigns:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "listId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the list."
          },
          {
            "name": "phone",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Phone number in international format."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "removed": {
                          "type": "boolean",
                          "enum": [
                            true
                          ],
                          "description": "Whether removed.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
                        },
                        "listId": {
                          "type": "string",
                          "format": "uuid",
                          "description": "Identifier for the list.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                        },
                        "phone": {
                          "type": "string",
                          "description": "Phone number in international format."
                        },
                        "recipientCount": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Number of recipients.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        }
                      },
                      "required": [
                        "removed",
                        "listId",
                        "phone",
                        "recipientCount"
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/audience-profiles": {
      "get": {
        "operationId": "listAudienceProfiles",
        "tags": [
          "audience-profiles"
        ],
        "summary": "List audience profiles",
        "description": "Lists customer-supplied profiles for the team with cursor pagination. Deleted profiles are omitted.\n\nAPI keys require `campaigns:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies cursor for this query parameter."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                          },
                          "phone": {
                            "type": "string",
                            "pattern": "^\\+[1-9][0-9]{6,14}$",
                            "description": "Phone number in international format.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\+[1-9][0-9]{6,14}$` |"
                          },
                          "revision": {
                            "type": "integer",
                            "minimum": 1,
                            "description": "Specifies revision for this data.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
                          },
                          "tags": {
                            "type": "array",
                            "maxItems": 20,
                            "items": {
                              "type": "string",
                              "maxLength": 48
                            },
                            "description": "Tags associated with this data.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `20` items |\n| Item string length | At most `48` characters |"
                          },
                          "attributes": {
                            "type": "object",
                            "maxProperties": 20,
                            "additionalProperties": {
                              "anyOf": [
                                {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                },
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "boolean"
                                }
                              ]
                            },
                            "description": "Structured attributes values for this data.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Object size | At most `20` properties |"
                          },
                          "provenance": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "additionalProperties": false,
                            "properties": {
                              "source": {
                                "type": "string",
                                "enum": [
                                  "api",
                                  "csv",
                                  "form"
                                ],
                                "description": "Specifies source for this provenance.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `api` | Api. |\n| `csv` | Csv. |\n| `form` | Form. |"
                              },
                              "reference": {
                                "type": "string",
                                "maxLength": 128,
                                "description": "Specifies reference for this provenance.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `128` characters |"
                              }
                            },
                            "required": [
                              "source",
                              "reference"
                            ],
                            "description": "Structured provenance values for this data.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `source`: `api` or `csv` or `form`; Required fields: `source`, `reference` |\n| Alternative 2 | `null` |"
                          },
                          "createdAt": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Unix timestamp in milliseconds when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "updatedAt": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Unix timestamp in milliseconds when this resource was last updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          }
                        },
                        "required": [
                          "id",
                          "phone",
                          "revision",
                          "tags",
                          "attributes",
                          "provenance",
                          "createdAt",
                          "updatedAt"
                        ]
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CursorPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/audience-profiles/{phone}": {
      "get": {
        "operationId": "getAudienceProfile",
        "tags": [
          "audience-profiles"
        ],
        "summary": "Get an audience profile",
        "description": "Gets one customer-supplied profile by its E.164 phone. Deleted profiles return 404.\n\nAPI keys require `campaigns:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "phone",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Phone number in international format."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                        },
                        "phone": {
                          "type": "string",
                          "pattern": "^\\+[1-9][0-9]{6,14}$",
                          "description": "Phone number in international format.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\+[1-9][0-9]{6,14}$` |"
                        },
                        "revision": {
                          "type": "integer",
                          "minimum": 1,
                          "description": "Specifies revision for this data.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
                        },
                        "tags": {
                          "type": "array",
                          "maxItems": 20,
                          "items": {
                            "type": "string",
                            "maxLength": 48
                          },
                          "description": "Tags associated with this data.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `20` items |\n| Item string length | At most `48` characters |"
                        },
                        "attributes": {
                          "type": "object",
                          "maxProperties": 20,
                          "additionalProperties": {
                            "anyOf": [
                              {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              {
                                "type": "number"
                              },
                              {
                                "type": "boolean"
                              }
                            ]
                          },
                          "description": "Structured attributes values for this data.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Object size | At most `20` properties |"
                        },
                        "provenance": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "additionalProperties": false,
                          "properties": {
                            "source": {
                              "type": "string",
                              "enum": [
                                "api",
                                "csv",
                                "form"
                              ],
                              "description": "Specifies source for this provenance.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `api` | Api. |\n| `csv` | Csv. |\n| `form` | Form. |"
                            },
                            "reference": {
                              "type": "string",
                              "maxLength": 128,
                              "description": "Specifies reference for this provenance.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `128` characters |"
                            }
                          },
                          "required": [
                            "source",
                            "reference"
                          ],
                          "description": "Structured provenance values for this data.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `source`: `api` or `csv` or `form`; Required fields: `source`, `reference` |\n| Alternative 2 | `null` |"
                        },
                        "createdAt": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Unix timestamp in milliseconds when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "updatedAt": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Unix timestamp in milliseconds when this resource was last updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        }
                      },
                      "required": [
                        "id",
                        "phone",
                        "revision",
                        "tags",
                        "attributes",
                        "provenance",
                        "createdAt",
                        "updatedAt"
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      },
      "put": {
        "operationId": "putAudienceProfile",
        "tags": [
          "audience-profiles"
        ],
        "summary": "Create or update an audience profile",
        "description": "Creates a bounded team profile, or replaces tags and attributes at the observed revision. A stale revision returns 409. To recreate a profile deleted in the last 30 days, send the `revision` the delete returned as `expectedRevision`; a put without it returns 409 with a message naming that revision. A consent assertion records the customer's statement; it does not clear an opt-out or authorize a send. This beta requires enrollment and release eligibility.\n\nAPI keys require `campaigns:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "phone",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Phone number in international format."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "expectedRevision": {
                    "type": "integer",
                    "minimum": 1,
                    "description": "Required to edit or recreate a deleted profile; omit only for first creation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
                  },
                  "tags": {
                    "type": "array",
                    "maxItems": 20,
                    "items": {
                      "type": "string",
                      "maxLength": 48
                    },
                    "description": "Tags associated with this schema.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `20` items |\n| Item string length | At most `48` characters |"
                  },
                  "attributes": {
                    "type": "object",
                    "maxProperties": 20,
                    "additionalProperties": {
                      "anyOf": [
                        {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        {
                          "type": "number"
                        },
                        {
                          "type": "boolean"
                        }
                      ]
                    },
                    "description": "Structured attributes values for this schema.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Object size | At most `20` properties |"
                  },
                  "provenance": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "source": {
                        "type": "string",
                        "enum": [
                          "api",
                          "csv",
                          "form"
                        ],
                        "description": "Specifies source for this provenance.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `api` | Api. |\n| `csv` | Csv. |\n| `form` | Form. |"
                      },
                      "reference": {
                        "type": "string",
                        "maxLength": 128,
                        "description": "Specifies reference for this provenance.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `128` characters |"
                      }
                    },
                    "required": [
                      "source",
                      "reference"
                    ],
                    "description": "Structured provenance values for this schema."
                  },
                  "consent": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "purpose": {
                        "type": "string",
                        "enum": [
                          "campaigns"
                        ],
                        "description": "Specifies purpose for this consent.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `campaigns` | Campaigns. |"
                      },
                      "source": {
                        "type": "string",
                        "enum": [
                          "api",
                          "csv",
                          "form"
                        ],
                        "description": "Specifies source for this consent.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `api` | Api. |\n| `csv` | Csv. |\n| `form` | Form. |"
                      },
                      "reference": {
                        "type": "string",
                        "maxLength": 128,
                        "description": "Specifies reference for this consent.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `128` characters |"
                      },
                      "allowed": {
                        "type": "boolean",
                        "description": "Whether allowed."
                      },
                      "assertedAt": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 8640000000000000,
                        "description": "Timestamp for asserted at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `8640000000000000` (inclusive) |"
                      }
                    },
                    "required": [
                      "purpose",
                      "source",
                      "reference",
                      "allowed",
                      "assertedAt"
                    ],
                    "description": "Structured consent values for this schema."
                  }
                },
                "required": [
                  "tags",
                  "attributes"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                        },
                        "phone": {
                          "type": "string",
                          "pattern": "^\\+[1-9][0-9]{6,14}$",
                          "description": "Phone number in international format.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\+[1-9][0-9]{6,14}$` |"
                        },
                        "revision": {
                          "type": "integer",
                          "minimum": 1,
                          "description": "Specifies revision for this data.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
                        },
                        "tags": {
                          "type": "array",
                          "maxItems": 20,
                          "items": {
                            "type": "string",
                            "maxLength": 48
                          },
                          "description": "Tags associated with this data.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `20` items |\n| Item string length | At most `48` characters |"
                        },
                        "attributes": {
                          "type": "object",
                          "maxProperties": 20,
                          "additionalProperties": {
                            "anyOf": [
                              {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              {
                                "type": "number"
                              },
                              {
                                "type": "boolean"
                              }
                            ]
                          },
                          "description": "Structured attributes values for this data.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Object size | At most `20` properties |"
                        },
                        "provenance": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "additionalProperties": false,
                          "properties": {
                            "source": {
                              "type": "string",
                              "enum": [
                                "api",
                                "csv",
                                "form"
                              ],
                              "description": "Specifies source for this provenance.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `api` | Api. |\n| `csv` | Csv. |\n| `form` | Form. |"
                            },
                            "reference": {
                              "type": "string",
                              "maxLength": 128,
                              "description": "Specifies reference for this provenance.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `128` characters |"
                            }
                          },
                          "required": [
                            "source",
                            "reference"
                          ],
                          "description": "Structured provenance values for this data.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `source`: `api` or `csv` or `form`; Required fields: `source`, `reference` |\n| Alternative 2 | `null` |"
                        },
                        "createdAt": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Unix timestamp in milliseconds when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "updatedAt": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Unix timestamp in milliseconds when this resource was last updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        }
                      },
                      "required": [
                        "id",
                        "phone",
                        "revision",
                        "tags",
                        "attributes",
                        "provenance",
                        "createdAt",
                        "updatedAt"
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      },
      "delete": {
        "operationId": "deleteAudienceProfile",
        "tags": [
          "audience-profiles"
        ],
        "summary": "Delete an audience profile",
        "description": "Removes profile fields, consent assertions and reusable audience-list memberships at the observed revision, and clears the preview row of each audience the phone belonged to. Recipients already added to campaigns (including drafts), previously uploaded files and opt-outs are not changed. The phone's deletion record is kept for 30 days; `revision` is its revision. During that time, adding the phone to an audience returns 409, and recreating the profile requires `expectedRevision` set to this revision. Deletion remains available after beta withdrawal.\n\nAPI keys require `campaigns:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "phone",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Phone number in international format."
          },
          {
            "name": "expectedRevision",
            "in": "query",
            "required": true,
            "description": "The profile revision you last read. A different current revision returns 409.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "deleted": {
                          "type": "boolean",
                          "enum": [
                            true
                          ],
                          "description": "Whether deleted.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
                        },
                        "phone": {
                          "type": "string",
                          "description": "Phone number in international format."
                        },
                        "revision": {
                          "type": "integer",
                          "minimum": 2,
                          "description": "Specifies revision for this data.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `2` or greater |"
                        }
                      },
                      "required": [
                        "deleted",
                        "phone",
                        "revision"
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/audience-profiles/{phone}/consent": {
      "get": {
        "operationId": "listAudienceProfileConsent",
        "tags": [
          "audience-profiles"
        ],
        "summary": "List audience consent assertions",
        "description": "Lists the customer's recorded campaign consent assertions for one profile. Assertions do not override opt-outs.\n\nAPI keys require `campaigns:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "phone",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Phone number in international format."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies cursor for this query parameter."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                          },
                          "profileRevision": {
                            "type": "integer",
                            "minimum": 1,
                            "description": "Specifies profile revision for this data.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
                          },
                          "purpose": {
                            "type": "string",
                            "enum": [
                              "campaigns"
                            ],
                            "description": "Specifies purpose for this data.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `campaigns` | Campaigns. |"
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "api",
                              "csv",
                              "form"
                            ],
                            "description": "Specifies source for this data.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `api` | Api. |\n| `csv` | Csv. |\n| `form` | Form. |"
                          },
                          "reference": {
                            "type": "string",
                            "description": "Specifies reference for this data."
                          },
                          "allowed": {
                            "type": "boolean",
                            "description": "Whether allowed."
                          },
                          "assertedAt": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Timestamp for asserted at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "createdAt": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Unix timestamp in milliseconds when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          }
                        },
                        "required": [
                          "id",
                          "profileRevision",
                          "purpose",
                          "source",
                          "reference",
                          "allowed",
                          "assertedAt",
                          "createdAt"
                        ]
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CursorPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/audience-segments": {
      "get": {
        "operationId": "listAudienceSegments",
        "tags": [
          "audience-segments"
        ],
        "summary": "List audience segments",
        "description": "Lists the team's saved segments with cursor pagination. Reads stay available after beta withdrawal.\n\nAPI keys require `campaigns:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies cursor for this query parameter."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__AudienceSegment"
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CursorPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      },
      "post": {
        "operationId": "createAudienceSegment",
        "tags": [
          "audience-segments"
        ],
        "summary": "Create an audience segment",
        "description": "Saves a named rule set over the team's audience profiles. A team holds at most 100 segments. Every campaign a rule names must belong to the team. Both audience betas, `campaigns.audience-profiles` and `campaigns.segments`, must be available; otherwise the request answers `403 feature_unavailable`.\n\nAPI keys require `campaigns:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100,
                    "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `100` characters |"
                  },
                  "rules": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/platform__AudienceSegmentRules"
                      }
                    ],
                    "description": "Specifies rules for this schema."
                  }
                },
                "required": [
                  "name",
                  "rules"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__AudienceSegment"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/audience-segments/preview": {
      "post": {
        "operationId": "previewAudienceSegmentRules",
        "tags": [
          "audience-segments"
        ],
        "summary": "Preview audience segment rules",
        "description": "Evaluates unsaved rules now and returns counts and up to five masked matching profiles. Nothing is saved. A campaign evaluates its segment again when it launches, so counts can change. Both audience betas, `campaigns.audience-profiles` and `campaigns.segments`, must be available; otherwise the request answers `403 feature_unavailable`.\n\nAPI keys require `campaigns:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rules": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/platform__AudienceSegmentRules"
                      }
                    ],
                    "description": "Specifies rules for this schema."
                  }
                },
                "required": [
                  "rules"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__AudienceSegmentPreview"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/audience-segments/{segmentId}": {
      "get": {
        "operationId": "getAudienceSegment",
        "tags": [
          "audience-segments"
        ],
        "summary": "Get an audience segment",
        "description": "Returns one saved segment.\n\nAPI keys require `campaigns:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "segmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the segment."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__AudienceSegment"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      },
      "patch": {
        "operationId": "updateAudienceSegment",
        "tags": [
          "audience-segments"
        ],
        "summary": "Update an audience segment",
        "description": "Replaces the name, the rules or both at the observed revision; a stale revision answers `409`. A draft campaign that uses the segment evaluates the new rules when it launches. Campaigns already launched keep their recipients. Both audience betas, `campaigns.audience-profiles` and `campaigns.segments`, must be available; otherwise the request answers `403 feature_unavailable`.\n\nAPI keys require `campaigns:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "segmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the segment."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "expectedRevision": {
                    "type": "integer",
                    "minimum": 1,
                    "description": "Specifies expected revision for this schema.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100,
                    "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `100` characters |"
                  },
                  "rules": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/platform__AudienceSegmentRules"
                      }
                    ],
                    "description": "Specifies rules for this schema."
                  }
                },
                "required": [
                  "expectedRevision"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__AudienceSegment"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      },
      "delete": {
        "operationId": "deleteAudienceSegment",
        "tags": [
          "audience-segments"
        ],
        "summary": "Delete an audience segment",
        "description": "Deletes the segment at the observed revision. Answers `409` while an unlaunched draft campaign uses it as its audience. Launched campaigns keep their recipients and `segmentSnapshot`; their `segmentId` becomes null. Deletion stays available after beta withdrawal.\n\nAPI keys require `campaigns:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "segmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the segment."
          },
          {
            "name": "expectedRevision",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 9007199254740991
            },
            "description": "Specifies expected revision for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `9007199254740991` (inclusive) |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "deleted": {
                          "type": "boolean",
                          "enum": [
                            true
                          ],
                          "description": "Whether deleted.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
                        },
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                        }
                      },
                      "required": [
                        "deleted",
                        "id"
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/audience-segments/{segmentId}/preview": {
      "get": {
        "operationId": "previewAudienceSegment",
        "tags": [
          "audience-segments"
        ],
        "summary": "Preview an audience segment",
        "description": "Evaluates the saved segment now and returns counts, up to five masked matching profiles and the evaluated `revision`. Both audience betas, `campaigns.audience-profiles` and `campaigns.segments`, must be available; otherwise the request answers `403 feature_unavailable`.\n\nAPI keys require `campaigns:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "segmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the segment."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "matchedCount": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Profiles that match the rules.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "optedOutCount": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Matched profiles whose number is on the team's opt-out list.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "consentWithheldCount": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Matched profiles, not opted out, whose latest consent assertion is `allowed: false`. Launch leaves them out.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "eligibleCount": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Matched profiles a launch now would send to.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "sample": {
                          "type": "array",
                          "maxItems": 5,
                          "description": "Up to five eligible profiles with the phone masked.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `5` items |",
                          "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                              "phone": {
                                "type": "string",
                                "description": "Masked phone, for example `+49*******12`."
                              },
                              "tags": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "Tags associated with this sample."
                              }
                            },
                            "required": [
                              "phone",
                              "tags"
                            ]
                          }
                        },
                        "evaluatedAt": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Evaluation time in Unix milliseconds.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "revision": {
                          "type": "integer",
                          "minimum": 1,
                          "description": "Specifies revision for this data.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
                        }
                      },
                      "required": [
                        "matchedCount",
                        "optedOutCount",
                        "consentWithheldCount",
                        "eligibleCount",
                        "sample",
                        "evaluatedAt",
                        "revision"
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/audience-profile-imports": {
      "post": {
        "operationId": "createAudienceProfileImport",
        "tags": [
          "audience-profiles"
        ],
        "summary": "Start an audience profile CSV import",
        "description": "Queues a bounded CSV import of customer-supplied team profiles. Exact CSV header names can be mapped to profile fields. At most one import is active per team. Files contain at most 10 MiB and 10,000 rows; the CSV is removed after completion or cancellation. The same replay key, file and mapping return the existing job. Requires beta enrollment.\n\nAPI keys require `campaigns:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "replayKey": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "^[A-Za-z0-9._:-]+$",
                    "description": "Specifies replay key for this schema.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |\n| Pattern | `^[A-Za-z0-9._:-]+$` |"
                  },
                  "csvBase64": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 13981016,
                    "format": "byte",
                    "description": "UTF-8 CSV encoded as standard padded base64; decoded file at most 10 MiB and 10,000 data rows. The `tags` cell holds a JSON array of strings and the `attributes` cell a JSON object, quoted as CSV requires, for example `+15550100001,\"[\"\"vip\"\"]\",\"{\"\"city\"\":\"\"Lisbon\"\"}\"`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `13981016` characters |\n| Format | `byte` |"
                  },
                  "mapping": {
                    "type": "object",
                    "additionalProperties": false,
                    "description": "Maps profile fields to exact CSV header names. Required when the CSV uses different headers; unmapped CSV columns are ignored.",
                    "properties": {
                      "phone": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 64,
                        "description": "Phone number in international format.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |"
                      },
                      "tags": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 64,
                        "description": "Specifies tags for this mapping.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |"
                      },
                      "attributes": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 64,
                        "description": "Specifies attributes for this mapping.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |"
                      },
                      "expectedRevision": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 64,
                        "description": "Specifies expected revision for this mapping.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |"
                      },
                      "provenanceReference": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 64,
                        "description": "Specifies provenance reference for this mapping.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |"
                      },
                      "consentAllowed": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 64,
                        "description": "Specifies consent allowed for this mapping.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |"
                      },
                      "consentAssertedAt": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 64,
                        "description": "Timestamp for consent asserted at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |"
                      },
                      "consentReference": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 64,
                        "description": "Specifies consent reference for this mapping.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |"
                      }
                    },
                    "required": [
                      "phone",
                      "tags",
                      "attributes"
                    ]
                  }
                },
                "required": [
                  "replayKey",
                  "csvBase64"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                        },
                        "state": {
                          "type": "string",
                          "enum": [
                            "queued",
                            "completed",
                            "cancelled"
                          ],
                          "description": "Current lifecycle state of this resource.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `queued` | Queued. |\n| `completed` | Completed. |\n| `cancelled` | Cancelled. |"
                        },
                        "totalValid": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Rows that passed validation and will be written.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "invalidCount": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Rows refused by validation; `invalidSamples` lists up to 20.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "invalidSamples": {
                          "type": "array",
                          "maxItems": 20,
                          "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                              "row": {
                                "type": "integer",
                                "minimum": 2,
                                "description": "Specifies row for this invalid sample.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `2` or greater |"
                              },
                              "reason": {
                                "type": "string",
                                "description": "Reason for the reported state or outcome."
                              }
                            },
                            "required": [
                              "row",
                              "reason"
                            ]
                          },
                          "description": "Invalid samples associated with this data.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `20` items |"
                        },
                        "conflictSamples": {
                          "type": "array",
                          "maxItems": 20,
                          "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                              "row": {
                                "type": "integer",
                                "minimum": 2,
                                "description": "Specifies row for this conflict sample.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `2` or greater |"
                              },
                              "reason": {
                                "type": "string",
                                "enum": [
                                  "quota",
                                  "revision_conflict"
                                ],
                                "description": "Reason for the reported state or outcome.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `quota` | Quota. |\n| `revision_conflict` | Revision conflict. |"
                              }
                            },
                            "required": [
                              "row",
                              "reason"
                            ]
                          },
                          "description": "Conflict samples associated with this data.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `20` items |"
                        },
                        "processedValid": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Valid rows written so far.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "createdCount": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Profiles created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "updatedCount": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Existing profiles updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "conflictCount": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Valid rows not written because of the team's profile quota or a revision conflict; `conflictSamples` lists up to 20.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "createdAt": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Unix timestamp in milliseconds when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "updatedAt": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Unix timestamp in milliseconds when this resource was last updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "completedAt": {
                          "type": [
                            "integer",
                            "null"
                          ],
                          "minimum": 0,
                          "description": "Unix timestamp in milliseconds when this operation completed.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        }
                      },
                      "required": [
                        "id",
                        "state",
                        "totalValid",
                        "invalidCount",
                        "invalidSamples",
                        "conflictSamples",
                        "processedValid",
                        "createdCount",
                        "updatedCount",
                        "conflictCount",
                        "createdAt",
                        "updatedAt",
                        "completedAt"
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          },
          "413": {
            "$ref": "#/components/responses/platform__PayloadTooLarge"
          }
        }
      }
    },
    "/platform/audience-profile-imports/{jobId}": {
      "get": {
        "operationId": "getAudienceProfileImport",
        "tags": [
          "audience-profiles"
        ],
        "summary": "Get an audience profile import report",
        "description": "Returns aggregate counts and up to 20 row-number/reason samples. Raw phone numbers and custom values are not included. Reports expire 30 days after completion or cancellation.\n\nAPI keys require `campaigns:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the job."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                        },
                        "state": {
                          "type": "string",
                          "enum": [
                            "queued",
                            "completed",
                            "cancelled"
                          ],
                          "description": "Current lifecycle state of this resource.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `queued` | Queued. |\n| `completed` | Completed. |\n| `cancelled` | Cancelled. |"
                        },
                        "totalValid": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Rows that passed validation and will be written.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "invalidCount": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Rows refused by validation; `invalidSamples` lists up to 20.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "invalidSamples": {
                          "type": "array",
                          "maxItems": 20,
                          "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                              "row": {
                                "type": "integer",
                                "minimum": 2,
                                "description": "Specifies row for this invalid sample.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `2` or greater |"
                              },
                              "reason": {
                                "type": "string",
                                "description": "Reason for the reported state or outcome."
                              }
                            },
                            "required": [
                              "row",
                              "reason"
                            ]
                          },
                          "description": "Invalid samples associated with this data.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `20` items |"
                        },
                        "conflictSamples": {
                          "type": "array",
                          "maxItems": 20,
                          "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                              "row": {
                                "type": "integer",
                                "minimum": 2,
                                "description": "Specifies row for this conflict sample.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `2` or greater |"
                              },
                              "reason": {
                                "type": "string",
                                "enum": [
                                  "quota",
                                  "revision_conflict"
                                ],
                                "description": "Reason for the reported state or outcome.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `quota` | Quota. |\n| `revision_conflict` | Revision conflict. |"
                              }
                            },
                            "required": [
                              "row",
                              "reason"
                            ]
                          },
                          "description": "Conflict samples associated with this data.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `20` items |"
                        },
                        "processedValid": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Valid rows written so far.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "createdCount": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Profiles created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "updatedCount": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Existing profiles updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "conflictCount": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Valid rows not written because of the team's profile quota or a revision conflict; `conflictSamples` lists up to 20.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "createdAt": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Unix timestamp in milliseconds when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "updatedAt": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Unix timestamp in milliseconds when this resource was last updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "completedAt": {
                          "type": [
                            "integer",
                            "null"
                          ],
                          "minimum": 0,
                          "description": "Unix timestamp in milliseconds when this operation completed.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        }
                      },
                      "required": [
                        "id",
                        "state",
                        "totalValid",
                        "invalidCount",
                        "invalidSamples",
                        "conflictSamples",
                        "processedValid",
                        "createdCount",
                        "updatedCount",
                        "conflictCount",
                        "createdAt",
                        "updatedAt",
                        "completedAt"
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      },
      "delete": {
        "operationId": "cancelAudienceProfileImport",
        "tags": [
          "audience-profiles"
        ],
        "summary": "Cancel an audience profile import",
        "description": "Stops the next batch and removes the CSV. Already committed profile edits remain. Cancellation and report reads remain available after beta withdrawal.\n\nAPI keys require `campaigns:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the job."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                        },
                        "state": {
                          "type": "string",
                          "enum": [
                            "queued",
                            "completed",
                            "cancelled"
                          ],
                          "description": "Current lifecycle state of this resource.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `queued` | Queued. |\n| `completed` | Completed. |\n| `cancelled` | Cancelled. |"
                        },
                        "totalValid": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Rows that passed validation and will be written.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "invalidCount": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Rows refused by validation; `invalidSamples` lists up to 20.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "invalidSamples": {
                          "type": "array",
                          "maxItems": 20,
                          "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                              "row": {
                                "type": "integer",
                                "minimum": 2,
                                "description": "Specifies row for this invalid sample.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `2` or greater |"
                              },
                              "reason": {
                                "type": "string",
                                "description": "Reason for the reported state or outcome."
                              }
                            },
                            "required": [
                              "row",
                              "reason"
                            ]
                          },
                          "description": "Invalid samples associated with this data.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `20` items |"
                        },
                        "conflictSamples": {
                          "type": "array",
                          "maxItems": 20,
                          "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                              "row": {
                                "type": "integer",
                                "minimum": 2,
                                "description": "Specifies row for this conflict sample.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `2` or greater |"
                              },
                              "reason": {
                                "type": "string",
                                "enum": [
                                  "quota",
                                  "revision_conflict"
                                ],
                                "description": "Reason for the reported state or outcome.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `quota` | Quota. |\n| `revision_conflict` | Revision conflict. |"
                              }
                            },
                            "required": [
                              "row",
                              "reason"
                            ]
                          },
                          "description": "Conflict samples associated with this data.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `20` items |"
                        },
                        "processedValid": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Valid rows written so far.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "createdCount": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Profiles created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "updatedCount": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Existing profiles updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "conflictCount": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Valid rows not written because of the team's profile quota or a revision conflict; `conflictSamples` lists up to 20.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "createdAt": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Unix timestamp in milliseconds when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "updatedAt": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Unix timestamp in milliseconds when this resource was last updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "completedAt": {
                          "type": [
                            "integer",
                            "null"
                          ],
                          "minimum": 0,
                          "description": "Unix timestamp in milliseconds when this operation completed.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        }
                      },
                      "required": [
                        "id",
                        "state",
                        "totalValid",
                        "invalidCount",
                        "invalidSamples",
                        "conflictSamples",
                        "processedValid",
                        "createdCount",
                        "updatedCount",
                        "conflictCount",
                        "createdAt",
                        "updatedAt",
                        "completedAt"
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/templates": {
      "get": {
        "operationId": "listMessageTemplates",
        "tags": [
          "templates"
        ],
        "summary": "List message templates",
        "description": "Lists the message-template drafts in one project.\n\nRequires `templates:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the Polymorfa project that owns this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "maxItems": 500,
                      "items": {
                        "$ref": "#/components/schemas/platform__ManagementTemplate"
                      },
                      "description": "Structured data carried by this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `500` items |"
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      },
      "post": {
        "operationId": "createMessageTemplate",
        "tags": [
          "templates"
        ],
        "summary": "Create a message-template draft",
        "description": "Creates an incomplete or complete message-template draft in one project.\n\nRequires `templates:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__CreateManagementTemplateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__TemplateId"
                        }
                      ],
                      "description": "Structured data carried by this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/templates/{templateId}": {
      "get": {
        "operationId": "getMessageTemplate",
        "tags": [
          "templates"
        ],
        "summary": "Get a message-template draft",
        "description": "Gets one message-template draft from the specified project.\n\nRequires `templates:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the message template."
          },
          {
            "name": "projectId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the Polymorfa project that owns this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "anyOf": [
                        {
                          "type": "object",
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/platform__ManagementTemplate"
                            }
                          ]
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Structured data carried by this object.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `id`, `createdAt`, `name`, `category`, `language`, `status`, `kind`, `definition`, `sampleValues`, `cloudLinks`, `updatedAt` |\n| Alternative 2 | `null` |"
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      },
      "patch": {
        "operationId": "updateMessageTemplate",
        "tags": [
          "templates"
        ],
        "summary": "Update a message-template draft",
        "description": "Updates one message-template draft in the project supplied in the request body.\n\nRequires `templates:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the message template."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__UpdateManagementTemplateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ManagementTemplate"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      },
      "delete": {
        "operationId": "deleteMessageTemplate",
        "tags": [
          "templates"
        ],
        "summary": "Delete a message-template draft",
        "description": "Deletes one message-template draft from the specified project.\n\nRequires `templates:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the message template."
          },
          {
            "name": "projectId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the Polymorfa project that owns this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__DeleteManagementTemplateResult"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/flows": {
      "get": {
        "operationId": "listFlows",
        "tags": [
          "flows"
        ],
        "summary": "List Flow drafts",
        "description": "Lists compact WhatsApp Flow draft summaries in one project.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the Polymorfa project that owns this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "maxItems": 250,
                      "items": {
                        "$ref": "#/components/schemas/platform__FlowSummary"
                      },
                      "description": "Structured data carried by this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `250` items |"
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      },
      "post": {
        "operationId": "createFlow",
        "tags": [
          "flows"
        ],
        "summary": "Create a Flow draft",
        "description": "Creates a project-scoped WhatsApp Flow draft. A supplied draftId makes retries idempotent.\n\nRequires `sessions:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__CreateFlowRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__FlowDraft"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/flows/{flowId}": {
      "get": {
        "operationId": "getFlow",
        "tags": [
          "flows"
        ],
        "summary": "Get a Flow draft",
        "description": "Gets one project-scoped WhatsApp Flow draft.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "flowId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the flow."
          },
          {
            "name": "projectId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the Polymorfa project that owns this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "anyOf": [
                        {
                          "type": "object",
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/platform__FlowDraft"
                            }
                          ]
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Structured data carried by this object.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `status`: `draft` or `ready` or `archived`; Required fields: `id`, `name`, `status`, `version`, `screenCount`, `metaLinks`, `createdAt`, `updatedAt`, `definition` |\n| Alternative 2 | `null` |"
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      },
      "patch": {
        "operationId": "updateFlow",
        "tags": [
          "flows"
        ],
        "summary": "Update a Flow draft",
        "description": "Updates a Flow draft when expectedUpdatedAt matches the stored revision.\n\nRequires `sessions:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "flowId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the flow."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__UpdateFlowRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__FlowDraft"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      },
      "delete": {
        "operationId": "deleteFlow",
        "tags": [
          "flows"
        ],
        "summary": "Delete a Flow draft",
        "description": "Deletes a local Flow draft without deleting linked Meta Flow assets.\n\nRequires `sessions:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "flowId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the flow."
          },
          {
            "name": "projectId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the Polymorfa project that owns this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__DeleteFlowResult"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/optouts": {
      "get": {
        "operationId": "listOptOuts",
        "tags": [
          "optouts"
        ],
        "summary": "List opt outs",
        "description": "Public Management API. API keys require `campaigns:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__DataEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      },
      "post": {
        "operationId": "createOptOut",
        "tags": [
          "optouts"
        ],
        "summary": "Create opt out",
        "description": "Public Management API. API keys require `campaigns:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__DataEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/optouts/batch": {
      "post": {
        "operationId": "createOptOuts",
        "tags": [
          "optouts"
        ],
        "summary": "Create opt outs",
        "description": "Public Management API. API keys require `campaigns:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__DataEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/optouts/{phone}": {
      "delete": {
        "operationId": "deleteOptOut",
        "tags": [
          "optouts"
        ],
        "summary": "Delete opt out",
        "description": "Public Management API. API keys require `campaigns:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "phone",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Phone number in international format."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__DataEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/optouts/settings": {
      "get": {
        "operationId": "getOptOutSettings",
        "tags": [
          "optouts"
        ],
        "summary": "Get opt-out keyword settings",
        "description": "Returns whether keyword opt-out capture is enabled for the team and the opt-out and opt-in keyword lists. A team that never saved settings receives the defaults: enabled, opt-out keywords `STOP`, `STOPALL`, `UNSUBSCRIBE`, `CANCEL`, `END`, `QUIT`, `PARAR`, `SAIR`, `CANCELAR`, `DESCADASTRAR`, `BAJA`, and opt-in keywords `START`, `UNSTOP`. `updatedAt` is null while the defaults apply.\n\nAPI keys require `campaigns:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__OptOutSettings"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      },
      "put": {
        "operationId": "updateOptOutSettings",
        "tags": [
          "optouts"
        ],
        "summary": "Update opt-out keyword settings",
        "description": "Replaces the team's keyword opt-out settings. When enabled, a direct text reply whose whole body matches an opt-out keyword, from a number that received a campaign message from the team in the last 30 days, adds that number to the opt-out list with source `stop-keyword` and emits `contact.opted_out`. Matching ignores letter case and surrounding punctuation and whitespace. An opt-in keyword removes only an opt-out created this way and emits `contact.opted_in`; opt-outs added manually, by file or through the API are never removed by a reply. Each list holds at most 50 keywords of 1 to 32 characters, the opt-out list needs at least one keyword, and the two lists must not share a keyword. Keywords are stored in upper case. Changes apply to replies within 30 seconds.\n\nAPI keys require `campaigns:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__UpdateOptOutSettingsInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__OptOutSettings"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/optouts/confirmation-settings": {
      "get": {
        "operationId": "getStopConfirmationSettings",
        "tags": [
          "optouts"
        ],
        "summary": "Get STOP confirmation settings",
        "description": "Returns the team's optional acknowledgement preference. Confirmations are disabled by default. A locale is explicitly selected from English, Brazilian Portuguese or Spanish; the response includes the reviewed acknowledgement text. Reads remain available after beta withdrawal.\n\nAPI keys require `campaigns:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__StopConfirmationSettings"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      },
      "put": {
        "operationId": "updateStopConfirmationSettings",
        "tags": [
          "optouts"
        ],
        "summary": "Update STOP confirmation settings",
        "description": "Replaces the team's preference using the observed revision. Enabling requires STOP confirmations beta access and a selected locale. A team owner or admin can also change it in the console. A new STOP opt-out queues at most one plain acknowledgement from the receiving connection; manual opt-outs, repeated STOP while suppressed and START produce none. A confirmation cannot undo suppression. Disabling remains available after beta withdrawal and cancels queued acknowledgements. A changed revision returns 409. Unknown send outcomes are never resent with a new operation identity.\n\nAPI keys require `campaigns:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__UpdateStopConfirmationSettingsInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__StopConfirmationSettings"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/optouts/confirmation-summary": {
      "get": {
        "operationId": "getStopConfirmationSummary",
        "tags": [
          "optouts"
        ],
        "summary": "Get STOP confirmation outcome counts",
        "description": "Returns aggregate acknowledgement outcomes from the last 30 days, without recipient phones or message content. Disabled is the preference state, queued is waiting, admitted may have been submitted, completed means the provider accepted the send rather than delivered it, failed is a proven skip or rejection, and unknown means the send outcome could not be established. All outcomes preserve the opt-out.\n\nAPI keys require `campaigns:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__StopConfirmationSummary"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/billing": {
      "get": {
        "operationId": "getBilling",
        "tags": [
          "billing"
        ],
        "summary": "Get billing",
        "description": "Public Management API. API keys require `billing:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__DataEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/billing/usage": {
      "get": {
        "operationId": "listUsageMeters",
        "tags": [
          "billing"
        ],
        "summary": "List usage meters",
        "description": "Public Management API. API keys require `billing:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__DataEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/billing/transactions": {
      "get": {
        "operationId": "listBillingTransactions",
        "tags": [
          "billing"
        ],
        "summary": "List billing transactions",
        "description": "Public Management API. API keys require `billing:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__DataEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/billing/pricing": {
      "get": {
        "operationId": "listTierPricing",
        "tags": [
          "billing"
        ],
        "summary": "List tier pricing",
        "description": "Public Management API. API keys require `billing:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__DataEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/billing/controls/{scope}/{resourceId}": {
      "get": {
        "operationId": "getResourceBillingControls",
        "tags": [
          "billing"
        ],
        "summary": "Read a resource's limit and priority",
        "description": "Reads one project, customer or real number without loading the team directory. Requires an organization API key with the stated billing scope, or a signed-in team owner or admin. Project and client credentials cannot access these controls. Billing must be configured. Writes require Pay-As-You-Go. These controls never enable charging of unpriced usage.\n\nAPI keys require `billing:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "scope",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "project",
                "customer",
                "number"
              ]
            },
            "description": "Specifies scope for this path parameter.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `project` | Project. |\n| `customer` | Customer. |\n| `number` | Number. |"
          },
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the resource affected by this event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ResourceBillingControls"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "503": {
            "$ref": "#/components/responses/platform__PropagationPending"
          }
        }
      },
      "put": {
        "operationId": "setResourceBillingControls",
        "tags": [
          "billing"
        ],
        "summary": "Set a resource's limit and priority",
        "description": "Saves the monthly limit and priority together, atomically. Both observed revisions are required. Conflicts leave both settings unchanged. Null removes a limit; zero blocks new charges. Existing paid service continues. Requires an organization API key with the stated billing scope, or a signed-in team owner or admin. Project and client credentials cannot access these controls. Billing must be configured. Writes require Pay-As-You-Go. These controls never enable charging of unpriced usage.\n\nAPI keys require `billing:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "scope",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "project",
                "customer",
                "number"
              ]
            },
            "description": "Specifies scope for this path parameter.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `project` | Project. |\n| `customer` | Customer. |\n| `number` | Number. |"
          },
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the resource affected by this event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "limitCredits": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "minimum": 0,
                    "multipleOf": 0.000001,
                    "maximum": 1000000,
                    "description": "Specifies limit credits for this schema.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1000000` (inclusive); Increment: Multiple of `0.000001` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1000000` (inclusive) |\n| Increment | Multiple of `0.000001` |"
                  },
                  "priority": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000,
                    "description": "Specifies priority for this schema.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1000000` (inclusive) |"
                  },
                  "expectedBudgetRevision": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 2147483646,
                    "description": "Specifies expected budget revision for this schema.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `2147483646` (inclusive) |"
                  },
                  "expectedPriorityRevision": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 2147483646,
                    "description": "Specifies expected priority revision for this schema.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `2147483646` (inclusive) |"
                  }
                },
                "required": [
                  "limitCredits",
                  "priority",
                  "expectedBudgetRevision",
                  "expectedPriorityRevision"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ResourceBillingControls"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          },
          "503": {
            "$ref": "#/components/responses/platform__PropagationPending"
          }
        }
      }
    },
    "/platform/billing/limits": {
      "get": {
        "operationId": "getBillingLimits",
        "tags": [
          "billing"
        ],
        "summary": "Read monthly spending limits",
        "description": "Reads attributed charges and active reservations in Polymorfa credits. Months reset at 00:00 UTC on the first day. Omit projectId for project limits across the team; pass it to include that project's customer and number limits. Pass scope=project to read only project limits. Requires an organization API key with the stated billing scope, or a signed-in team owner or admin. Project and client credentials cannot access these controls. Billing must be configured. Writes require Pay-As-You-Go. These controls never enable charging of unpriced usage.\n\nAPI keys require `billing:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "scope",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "project"
              ]
            },
            "description": "Specifies scope for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `project` | Project. |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__BillingLimits"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "503": {
            "$ref": "#/components/responses/platform__PropagationPending"
          }
        }
      }
    },
    "/platform/billing/limits/{scope}/{resourceId}": {
      "put": {
        "operationId": "setBillingLimit",
        "tags": [
          "billing"
        ],
        "summary": "Set a monthly spending limit",
        "description": "Zero blocks new charges; null removes the limit. Existing paid service continues to its paid-window end. Reservations count toward admission. Supply the revision from the limit read; a stale revision returns 409. Retrying the same successful update is harmless. Requires an organization API key with the stated billing scope, or a signed-in team owner or admin. Project and client credentials cannot access these controls. Billing must be configured. Writes require Pay-As-You-Go. These controls never enable charging of unpriced usage.\n\nAPI keys require `billing:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "scope",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "project",
                "customer",
                "number"
              ]
            },
            "description": "Specifies scope for this path parameter.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `project` | Project. |\n| `customer` | Customer. |\n| `number` | Number. |"
          },
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the resource affected by this event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "limitCredits": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "minimum": 0,
                    "multipleOf": 0.000001,
                    "maximum": 1000000,
                    "description": "Specifies limit credits for this schema.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1000000` (inclusive); Increment: Multiple of `0.000001` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1000000` (inclusive) |\n| Increment | Multiple of `0.000001` |"
                  },
                  "expectedRevision": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 2147483646,
                    "description": "Specifies expected revision for this schema.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `2147483646` (inclusive) |"
                  }
                },
                "required": [
                  "limitCredits",
                  "expectedRevision"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "saved": {
                          "type": "boolean",
                          "description": "Whether saved."
                        }
                      },
                      "required": [
                        "saved"
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          },
          "503": {
            "$ref": "#/components/responses/platform__PropagationPending"
          }
        }
      }
    },
    "/platform/billing/priorities": {
      "get": {
        "operationId": "getBillingPriorities",
        "tags": [
          "billing"
        ],
        "summary": "Read funding priorities",
        "description": "Lists active projects, customers and real numbers. Pass scope=project to read only project ranks. Pass projectId to read one project and its customer/number leaderboard. Project priority takes precedence. Within a project, numbers inherit their customer priority; a higher number priority overrides it. Number priority then breaks ties before renewal due time and stable number identity. Numbers are ranked within a project. Requires an organization API key with the stated billing scope, or a signed-in team owner or admin. Project and client credentials cannot access these controls. Billing must be configured. Writes require Pay-As-You-Go. These controls never enable charging of unpriced usage.\n\nAPI keys require `billing:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "scope",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "project"
              ]
            },
            "description": "Specifies scope for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `project` | Project. |"
          },
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__BillingPriorities"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "503": {
            "$ref": "#/components/responses/platform__PropagationPending"
          }
        }
      },
      "put": {
        "operationId": "reorderBillingPriorities",
        "tags": [
          "billing"
        ],
        "summary": "Reorder funding priorities",
        "description": "resourceIds is the complete list in highest-first order. Project order includes every active project; customer and number orders include every active customer or real number in projectId. Use scope=resource with projectId and a complete resources array of {scope: customer or number, resourceId} for one mixed leaderboard. Saves the whole order atomically. Concurrent changes or an incomplete list return 409. Retrying the same successful order is harmless. Requires an organization API key with the stated billing scope, or a signed-in team owner or admin. Project and client credentials cannot access these controls. Billing must be configured. Writes require Pay-As-You-Go. These controls never enable charging of unpriced usage.\n\nAPI keys require `billing:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "scope": {
                        "type": "string",
                        "enum": [
                          "resource"
                        ],
                        "description": "Specifies scope for this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `resource` | Resource. |"
                      },
                      "projectId": {
                        "type": "string",
                        "format": "uuid",
                        "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                      },
                      "resources": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "additionalProperties": false,
                          "properties": {
                            "scope": {
                              "type": "string",
                              "enum": [
                                "customer",
                                "number"
                              ],
                              "description": "Specifies scope for this resource.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `customer` | Customer. |\n| `number` | Number. |"
                            },
                            "resourceId": {
                              "type": "string",
                              "format": "uuid",
                              "description": "Identifier of the resource affected by this event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                            }
                          },
                          "required": [
                            "scope",
                            "resourceId"
                          ]
                        },
                        "uniqueItems": true,
                        "maxItems": 1000000,
                        "description": "Resources associated with this one of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `1000000` items |\n| Duplicates | Not accepted; every array item must be unique |"
                      },
                      "expectedRevision": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 2147483646,
                        "description": "Specifies expected revision for this one of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `2147483646` (inclusive) |"
                      }
                    },
                    "required": [
                      "scope",
                      "projectId",
                      "resources",
                      "expectedRevision"
                    ]
                  },
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "scope": {
                        "type": "string",
                        "enum": [
                          "project"
                        ],
                        "description": "Specifies scope for this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `project` | Project. |"
                      },
                      "resourceIds": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "uniqueItems": true,
                        "maxItems": 1000000,
                        "description": "Resource ids associated with this one of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `1000000` items |\n| Duplicates | Not accepted; every array item must be unique |\n| Item format | `uuid` |"
                      },
                      "expectedRevision": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 2147483646,
                        "description": "Specifies expected revision for this one of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `2147483646` (inclusive) |"
                      }
                    },
                    "required": [
                      "scope",
                      "resourceIds",
                      "expectedRevision"
                    ]
                  },
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "scope": {
                        "type": "string",
                        "enum": [
                          "customer",
                          "number"
                        ],
                        "description": "Specifies scope for this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `customer` | Customer. |\n| `number` | Number. |"
                      },
                      "projectId": {
                        "type": "string",
                        "format": "uuid",
                        "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                      },
                      "resourceIds": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "uniqueItems": true,
                        "maxItems": 1000000,
                        "description": "Resource ids associated with this one of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `1000000` items |\n| Duplicates | Not accepted; every array item must be unique |\n| Item format | `uuid` |"
                      },
                      "expectedRevision": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 2147483646,
                        "description": "Specifies expected revision for this one of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `2147483646` (inclusive) |"
                      }
                    },
                    "required": [
                      "scope",
                      "projectId",
                      "resourceIds",
                      "expectedRevision"
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__BillingPriorities"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          },
          "503": {
            "$ref": "#/components/responses/platform__PropagationPending"
          }
        }
      }
    },
    "/platform/billing/priorities/{scope}/{resourceId}": {
      "put": {
        "operationId": "setBillingPriority",
        "tags": [
          "billing"
        ],
        "summary": "Set a funding priority",
        "description": "Changes future funding protection and recovery order without shortening paid service. Supply the team-wide revision from the priorities read. A stale revision returns 409. Requires an organization API key with the stated billing scope, or a signed-in team owner or admin. Project and client credentials cannot access these controls. Billing must be configured. Writes require Pay-As-You-Go. These controls never enable charging of unpriced usage.\n\nAPI keys require `billing:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "scope",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "project",
                "customer",
                "number"
              ]
            },
            "description": "Specifies scope for this path parameter.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `project` | Project. |\n| `customer` | Customer. |\n| `number` | Number. |"
          },
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the resource affected by this event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "priority": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000,
                    "description": "Specifies priority for this schema.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1000000` (inclusive) |"
                  },
                  "expectedRevision": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 2147483646,
                    "description": "Specifies expected revision for this schema.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `2147483646` (inclusive) |"
                  }
                },
                "required": [
                  "priority",
                  "expectedRevision"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__BillingPriorities"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          },
          "503": {
            "$ref": "#/components/responses/platform__PropagationPending"
          }
        }
      }
    },
    "/platform/usage": {
      "get": {
        "operationId": "getUsageSummary",
        "tags": [
          "usage"
        ],
        "summary": "Get usage",
        "description": "Returns metered usage for one calendar month (UTC), by meter and by number. Omit `period` for the current month. Usage is measured, not charged: `billingEnabled` is false and no credits are deducted for it. A project token reads its own project; `session` narrows to one number.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "description": "Project to read. Omit to total every project in the organization.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "description": "Number (session name)."
            },
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          },
          {
            "name": "period",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-(0[1-9]|1[0-2])$",
              "description": "Calendar month in UTC, `YYYY-MM`. Defaults to the current month."
            },
            "description": "Specifies period for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\d{4}-(0[1-9]\\|1[0-2])$` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__UsageSummary"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/usage/records": {
      "get": {
        "operationId": "listUsageRecords",
        "tags": [
          "usage"
        ],
        "summary": "List usage records",
        "description": "Lists usage records, newest first. Filter by project, number (`session`), call (`callId`), meter or calendar month; without `period`, records from every month are listed. A call has one `call.duration` record, and an outgoing Cloud API call also a `call.cloud_pulses` record. Pass `nextCursor` as `cursor` to read the next page with the same filters.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "description": "Filter records to this project. Omit to list records from every project you can access.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "description": "Number (session name)."
            },
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          },
          {
            "name": "callId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "pattern": "^[\\x21-\\x7e]+$"
            },
            "description": "Identifier of the WhatsApp call.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |\n| Pattern | `^[\\x21-\\x7e]+$` |"
          },
          {
            "name": "meter",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/platform__UsageMeter"
            },
            "description": "Specifies meter for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `call.duration` | Call.duration. |\n| `call.cloud_pulses` | Call.cloud pulses. |\n| `campaign.call` | Campaign.call. |\n| `tts.characters` | Tts.characters. |\n| `tts.seconds` | Tts.seconds. |\n| `stt.seconds` | Stt.seconds. |\n| `agent.seconds` | Agent.seconds. |\n| `agent.tokens` | Agent.tokens. |\n| `agent.provider_cost` | Agent.provider cost. |\n| `channels.peak` | Channels.peak. |\n| `storage.byte_days` | Storage.byte days. |"
          },
          {
            "name": "period",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-(0[1-9]|1[0-2])$",
              "description": "Calendar month in UTC, `YYYY-MM`. Omit it to list records from every month."
            },
            "description": "Specifies period for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\d{4}-(0[1-9]\\|1[0-2])$` |"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "description": "Specifies cursor for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__UsageRecordPage"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/gates": {
      "get": {
        "operationId": "listUsageGates",
        "tags": [
          "usage"
        ],
        "summary": "List usage gates",
        "description": "Returns every usage gate with its mode, limit, current usage and decisions in the last 30 days. Gate state covers the whole team, so it needs a team API key; project tokens are refused. Pass `session` to include limits that apply per number, and `projectId` to require that the number belongs to that project. The active outbound monthly gate is record-only: an action over its limit is counted but allowed. It cannot be switched to enforce until placement reservations are available. An action whose limit cannot be checked fails with `503`.\n\nAPI keys require `sessions:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "description": "Use with `session` to require that the number belongs to this project. Gate limits and usage remain team-wide or per number.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "description": "Number (session name)."
            },
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__UsageGateList"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/team": {
      "get": {
        "operationId": "getOrganization",
        "tags": [
          "team"
        ],
        "summary": "Get organization",
        "description": "Public Management API. API keys require `sessions:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__DataEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/projects": {
      "get": {
        "operationId": "listProjects",
        "tags": [
          "projects"
        ],
        "summary": "List projects",
        "description": "Public Management API. API keys require `sessions:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__DataEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      },
      "post": {
        "operationId": "createProject",
        "tags": [
          "projects"
        ],
        "summary": "Create a project",
        "description": "Creates a project in development. A Free team can have one active project; creating another returns `409` with code `payg_required` until the team upgrades to Pay-As-You-Go. Pay-As-You-Go teams have no project limit.\n\nAPI keys require `sessions:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "name"
                ],
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200,
                    "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `200` characters |"
                  },
                  "defaultTier": {
                    "type": "string",
                    "enum": [
                      "free",
                      "standard",
                      "pro"
                    ],
                    "default": "standard",
                    "description": "Specifies default tier for this schema.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `free` | Free. |\n| `standard` | Standard. |\n| `pro` | Pro. |"
                  },
                  "icon": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "type",
                      "value"
                    ],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "emoji",
                          "icon",
                          "image"
                        ],
                        "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `emoji` | Emoji. |\n| `icon` | Icon. |\n| `image` | Image. |"
                      },
                      "value": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 512,
                        "description": "Value assigned to this field.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `512` characters |"
                      },
                      "color": {
                        "type": "string",
                        "maxLength": 64,
                        "description": "Specifies color for this icon.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `64` characters |"
                      },
                      "storageId": {
                        "type": "string",
                        "maxLength": 256,
                        "description": "Identifier for the storage.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |"
                      }
                    },
                    "description": "Structured icon values for this schema."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CreatedProject"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/projects/{projectId}/promote": {
      "post": {
        "operationId": "requestProductionEnrollment",
        "tags": [
          "projects"
        ],
        "summary": "Request production enrollment",
        "description": "Creates a durable production-enrollment operation. The team must be on Pay-As-You-Go; a Free team receives `409` with code `payg_required` and upgrades from Billing first. The project stays in development until provisioning succeeds. Poll the returned operationId for progress.\n\nRequires `sessions:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__ProductionEnrollmentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ProductionEnrollmentResult"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/projects/{projectId}/customers/status": {
      "get": {
        "operationId": "getCustomersStatus",
        "tags": [
          "customers"
        ],
        "summary": "Get Customers status",
        "description": "Returns whether Customers is enabled for the exact project and its protected default Customer when enabled.\n\nRequires `customers:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CustomersStatus"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/projects/{projectId}/customers/enable": {
      "post": {
        "operationId": "enableCustomers",
        "tags": [
          "customers"
        ],
        "summary": "Enable Customers",
        "description": "Enables Customers once, creates the default Customer, and assigns every existing Number in the project to it atomically.\n\nRequires `customers:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "description": "Specifies idempotency key for this header parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CustomersEnablement"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/projects/{projectId}/production-enrollments/{operationId}/approve": {
      "post": {
        "operationId": "approveProductionEnrollment",
        "tags": [
          "projects"
        ],
        "summary": "Approve production enrollment",
        "description": "Resumes a production-enrollment operation that requires approval.\n\nRequires `sessions:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ProductionEnrollmentCommandResult"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/projects/{projectId}/production-enrollments/{operationId}/cancel": {
      "post": {
        "operationId": "cancelProductionEnrollment",
        "tags": [
          "projects"
        ],
        "summary": "Cancel production enrollment",
        "description": "Requests cancellation of an active production-enrollment operation. Provisioned resources are compensated before cancellation completes.\n\nRequires `sessions:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ProductionEnrollmentCommandResult"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/webhooks": {
      "get": {
        "operationId": "listOrganizationWebhooks",
        "tags": [
          "webhooks"
        ],
        "summary": "List team webhooks",
        "description": "Lists only team-owned webhook endpoints. Project-owned endpoints are excluded.\n\nAPI keys require `webhooks:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "eventType",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "description": "Category assigned to event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          },
          {
            "name": "enabled",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Whether this feature is enabled."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies cursor for this query parameter."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__OrganizationWebhook"
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CursorPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      },
      "post": {
        "operationId": "createOrganizationWebhook",
        "tags": [
          "webhooks"
        ],
        "summary": "Create an team webhook",
        "description": "Creates an team-owned webhook and returns its generated signing secret once.\n\nAPI keys require `webhooks:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "description": "Specifies idempotency key for this header parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__CreateOrganizationWebhookInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__OrganizationWebhookCreationReceipt"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/webhooks/{webhookId}": {
      "get": {
        "operationId": "getOrganizationWebhook",
        "tags": [
          "webhooks"
        ],
        "summary": "Get an team webhook",
        "description": "Returns one team-owned webhook without secret values.\n\nAPI keys require `webhooks:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the webhook.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__OrganizationWebhook"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      },
      "patch": {
        "operationId": "updateOrganizationWebhook",
        "tags": [
          "webhooks"
        ],
        "summary": "Update an team webhook",
        "description": "Updates settings without rotating the signing secret.\n\nAPI keys require `webhooks:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the webhook.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "description": "Specifies idempotency key for this header parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__UpdateOrganizationWebhookInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__OrganizationWebhookMutationReceipt"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      },
      "delete": {
        "operationId": "deleteOrganizationWebhook",
        "tags": [
          "webhooks"
        ],
        "summary": "Delete an team webhook",
        "description": "Deletes one team-owned webhook.\n\nAPI keys require `webhooks:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the webhook.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "description": "Specifies idempotency key for this header parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__OrganizationWebhookDeletionReceipt"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/webhooks/{webhookId}/secret-rotations": {
      "post": {
        "operationId": "rotateOrganizationWebhookSecret",
        "tags": [
          "webhooks"
        ],
        "summary": "Rotate an team webhook secret",
        "description": "Rotates the signing secret and returns the new secret once.\n\nAPI keys require `webhooks:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the webhook.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "description": "Specifies idempotency key for this header parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__RotateWebhookSecretInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__OrganizationWebhookSecretRotationReceipt"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/webhooks/{webhookId}/tests": {
      "post": {
        "operationId": "testOrganizationWebhook",
        "tags": [
          "webhooks"
        ],
        "summary": "Send a team webhook test",
        "description": "Creates a synthetic team event and a traceable webhook delivery.\n\nAPI keys require `webhooks:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the webhook.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "description": "Specifies idempotency key for this header parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__TestOrganizationWebhookInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__OrganizationWebhookTestReceipt"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/projects/{projectId}/webhooks": {
      "get": {
        "operationId": "listProjectWebhooks",
        "tags": [
          "webhooks"
        ],
        "summary": "List project webhooks",
        "description": "Lists webhooks owned by the exact project in the route.\n\nRequires `webhooks:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "eventType",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "description": "Category assigned to event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          },
          {
            "name": "enabled",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Whether this feature is enabled."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies cursor for this query parameter."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__ProjectWebhook"
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CursorPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      },
      "post": {
        "operationId": "createProjectWebhook",
        "tags": [
          "webhooks"
        ],
        "summary": "Create a project webhook",
        "description": "Creates a project-owned webhook and returns its generated signing secret once.\n\nRequires `webhooks:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "description": "Specifies idempotency key for this header parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__CreateProjectWebhookInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ProjectWebhookCreationReceipt"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/projects/{projectId}/webhooks/{webhookId}": {
      "get": {
        "operationId": "getProjectWebhook",
        "tags": [
          "webhooks"
        ],
        "summary": "Get a project webhook",
        "description": "Returns one webhook owned by the exact project without secret values.\n\nRequires `webhooks:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the webhook.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ProjectWebhook"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      },
      "patch": {
        "operationId": "updateProjectWebhook",
        "tags": [
          "webhooks"
        ],
        "summary": "Update a project webhook",
        "description": "Updates settings without rotating the signing secret.\n\nRequires `webhooks:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the webhook.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "description": "Specifies idempotency key for this header parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__UpdateProjectWebhookInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ProjectWebhookMutationReceipt"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      },
      "delete": {
        "operationId": "deleteProjectWebhook",
        "tags": [
          "webhooks"
        ],
        "summary": "Delete a project webhook",
        "description": "Deletes one webhook owned by the exact project.\n\nRequires `webhooks:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the webhook.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "description": "Specifies idempotency key for this header parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ProjectWebhookDeletionReceipt"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/projects/{projectId}/webhooks/{webhookId}/secret-rotations": {
      "post": {
        "operationId": "rotateProjectWebhookSecret",
        "tags": [
          "webhooks"
        ],
        "summary": "Rotate a project webhook secret",
        "description": "Rotates the signing secret and returns the new secret once.\n\nRequires `webhooks:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the webhook.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "description": "Specifies idempotency key for this header parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__RotateWebhookSecretInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ProjectWebhookSecretRotationReceipt"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/projects/{projectId}/webhooks/{webhookId}/tests": {
      "post": {
        "operationId": "testProjectWebhook",
        "tags": [
          "webhooks"
        ],
        "summary": "Send a project webhook test",
        "description": "Creates a synthetic project event and a traceable webhook delivery. An optional complete native envelope is accepted only with an exact HMS-enabled project session.\n\nRequires `webhooks:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the webhook.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "description": "Specifies idempotency key for this header parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__TestProjectWebhookInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ProjectWebhookTestReceipt"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          },
          "422": {
            "$ref": "#/components/responses/platform__Unprocessable"
          }
        }
      }
    },
    "/platform/events": {
      "get": {
        "operationId": "listOrganizationEvents",
        "tags": [
          "events"
        ],
        "summary": "List team events",
        "description": "Lists team-owned event metadata. Project-owned events are excluded.\n\nAPI keys require `events:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Type discriminator for this object."
          },
          {
            "name": "since",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Specifies since for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          {
            "name": "until",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Specifies until for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies cursor for this query parameter."
          },
          {
            "name": "afterOffset",
            "in": "query",
            "required": false,
            "description": "Return events indexed after this retained-stream offset, in ingestion order. Cannot be combined with cursor, since, or until. Pass 0 to obtain page.highWatermark for an initial wait baseline.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^(0\\|[1-9][0-9]*)$` |",
            "schema": {
              "type": "string",
              "pattern": "^(0|[1-9][0-9]*)$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__OrganizationEvent"
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__IndexedEventPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/events/{eventId}": {
      "get": {
        "operationId": "getOrganizationEvent",
        "tags": [
          "events"
        ],
        "summary": "Get an team event",
        "description": "Returns one team-owned event and includes exact payload bytes only when requested and available.\n\nAPI keys require `events:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "eventId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "includePayload",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            },
            "description": "Whether include payload."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__OrganizationEvent"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/events/{eventId}/replays": {
      "post": {
        "operationId": "replayOrganizationEvent",
        "tags": [
          "events"
        ],
        "summary": "Replay an team event",
        "description": "Creates a new logical delivery for a retained team event.\n\nAPI keys require `events:replay`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "eventId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "description": "Specifies idempotency key for this header parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__ReplayEventInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__OrganizationEventReplayReceipt"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          },
          "422": {
            "$ref": "#/components/responses/platform__Unprocessable"
          }
        }
      }
    },
    "/platform/projects/{projectId}/events": {
      "get": {
        "operationId": "listProjectEvents",
        "tags": [
          "events"
        ],
        "summary": "List project events",
        "description": "Lists event metadata owned by the exact project in the route.\n\nRequires `events:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Type discriminator for this object."
          },
          {
            "name": "since",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Specifies since for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          {
            "name": "until",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Specifies until for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies cursor for this query parameter."
          },
          {
            "name": "afterOffset",
            "in": "query",
            "required": false,
            "description": "Return events indexed after this retained-stream offset, in ingestion order. Cannot be combined with cursor, since, or until. Pass 0 to obtain page.highWatermark for an initial wait baseline.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^(0\\|[1-9][0-9]*)$` |",
            "schema": {
              "type": "string",
              "pattern": "^(0|[1-9][0-9]*)$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__ProjectEvent"
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__IndexedEventPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/projects/{projectId}/events/{eventId}": {
      "get": {
        "operationId": "getProjectEvent",
        "tags": [
          "events"
        ],
        "summary": "Get a project event",
        "description": "Returns one event owned by the exact project and includes exact payload bytes only when requested and available.\n\nRequires `events:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "eventId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "includePayload",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            },
            "description": "Whether include payload."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ProjectEvent"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/projects/{projectId}/events/{eventId}/replays": {
      "post": {
        "operationId": "replayProjectEvent",
        "tags": [
          "events"
        ],
        "summary": "Replay a project event",
        "description": "Creates a new logical delivery for a retained event owned by the exact project.\n\nRequires `events:replay`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "eventId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "description": "Specifies idempotency key for this header parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__ReplayEventInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ProjectEventReplayReceipt"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          },
          "422": {
            "$ref": "#/components/responses/platform__Unprocessable"
          }
        }
      }
    },
    "/platform/projects/{projectId}/request-logs": {
      "get": {
        "operationId": "listProjectRequestLogs",
        "tags": [
          "logs"
        ],
        "summary": "List project request logs",
        "description": "Lists API and MCP requests made to the exact project in the route from the last 30 days. Without `after`, requests are newest first and `page.nextCursor` returns older requests. Pass `page.followCursor` as `after` to receive only newer requests, oldest first; this is how you tail the log. A request appears about two seconds after it completes. Reads of the request log are not listed.\n\nRequires `logs:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Requests per page, from 1 to 100.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "`page.nextCursor` from an earlier page. Lists older requests with the same filters. Cannot be combined with filters or `after`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `2048` characters |",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 2048
            }
          },
          {
            "name": "after",
            "in": "query",
            "required": false,
            "description": "`page.followCursor` from an earlier page. Lists newer requests, oldest first, with the same filters. Cannot be combined with filters or `cursor`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `2048` characters |",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 2048
            }
          },
          {
            "name": "since",
            "in": "query",
            "required": false,
            "description": "Earliest request time. Requests older than 30 days are never listed.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "until",
            "in": "query",
            "required": false,
            "description": "Latest request time.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "description": "Comma-separated HTTP status codes or classes, for example `404,5xx`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-5]([0-9]{2}\\|[xX]{2})(,[1-5]([0-9]{2}\\|[xX]{2})){0,9}$` |",
            "schema": {
              "type": "string",
              "pattern": "^[1-5]([0-9]{2}|[xX]{2})(,[1-5]([0-9]{2}|[xX]{2})){0,9}$"
            }
          },
          {
            "name": "method",
            "in": "query",
            "required": false,
            "description": "Comma-separated HTTP methods, for example `POST,DELETE`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^(GET\\|POST\\|PUT\\|PATCH\\|DELETE)(,(GET\\|POST\\|PUT\\|PATCH\\|DELETE)){0,9}$` |",
            "schema": {
              "type": "string",
              "pattern": "^(GET|POST|PUT|PATCH|DELETE)(,(GET|POST|PUT|PATCH|DELETE)){0,9}$"
            }
          },
          {
            "name": "route",
            "in": "query",
            "required": false,
            "description": "Exact route pattern, for example `/messaging/:session/messages`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            }
          },
          {
            "name": "source",
            "in": "query",
            "required": false,
            "description": "`api` for direct API requests or `mcp` for requests made through MCP.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `api` | Api. |\n| `mcp` | Mcp. |",
            "schema": {
              "type": "string",
              "enum": [
                "api",
                "mcp"
              ]
            }
          },
          {
            "name": "credentialId",
            "in": "query",
            "required": false,
            "description": "ID of the team API key or project token that made the request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "requestId",
            "in": "query",
            "required": false,
            "description": "Request ID from the `X-Request-Id` response header.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$` |",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
            }
          },
          {
            "name": "traceId",
            "in": "query",
            "required": false,
            "description": "W3C trace ID from the `X-Trace-Id` response header or your own `traceparent`. Matched case-insensitively.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[0-9a-fA-F]{32}$` |",
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-fA-F]{32}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__RequestLog"
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__RequestLogPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "429": {
            "$ref": "#/components/responses/platform__RateLimited"
          }
        }
      }
    },
    "/platform/webhook-deliveries": {
      "get": {
        "operationId": "listOrganizationWebhookDeliveries",
        "tags": [
          "webhook deliveries"
        ],
        "summary": "List team webhook deliveries",
        "description": "Lists logical deliveries for team-owned webhooks. Project-owned deliveries are excluded.\n\nAPI keys require `webhook-deliveries:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "webhookId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the webhook.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "eventId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "pending",
                "delivering",
                "retrying",
                "succeeded",
                "failed"
              ]
            },
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending` | Pending. |\n| `delivering` | Delivering. |\n| `retrying` | Retrying. |\n| `succeeded` | Succeeded. |\n| `failed` | Failed. |"
          },
          {
            "name": "since",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Specifies since for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          {
            "name": "until",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Specifies until for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies cursor for this query parameter."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__OrganizationWebhookDelivery"
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CursorPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/webhook-deliveries/{deliveryId}": {
      "get": {
        "operationId": "getOrganizationWebhookDelivery",
        "tags": [
          "webhook deliveries"
        ],
        "summary": "Get an team webhook delivery",
        "description": "Returns one logical team webhook delivery.\n\nAPI keys require `webhook-deliveries:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "deliveryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the delivery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__OrganizationWebhookDelivery"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/webhook-deliveries/{deliveryId}/retry": {
      "post": {
        "operationId": "retryOrganizationWebhookDelivery",
        "tags": [
          "webhook deliveries"
        ],
        "summary": "Retry an team webhook delivery",
        "description": "Appends a new immutable attempt to the same logical delivery.\n\nAPI keys require `webhook-deliveries:retry`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "deliveryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the delivery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "description": "Specifies idempotency key for this header parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__OrganizationWebhookDeliveryRetryReceipt"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          },
          "422": {
            "$ref": "#/components/responses/platform__Unprocessable"
          }
        }
      }
    },
    "/platform/webhook-deliveries/{deliveryId}/attempts": {
      "get": {
        "operationId": "listOrganizationWebhookDeliveryAttempts",
        "tags": [
          "webhook deliveries"
        ],
        "summary": "List team delivery attempts",
        "description": "Lists immutable network attempts for one team webhook delivery.\n\nAPI keys require `webhook-deliveries:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "deliveryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the delivery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies cursor for this query parameter."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__OrganizationWebhookDeliveryAttempt"
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CursorPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/webhook-deliveries/{deliveryId}/attempts/{attemptId}": {
      "get": {
        "operationId": "getOrganizationWebhookDeliveryAttempt",
        "tags": [
          "webhook deliveries"
        ],
        "summary": "Get team delivery attempt",
        "description": "Returns one immutable network attempt.\n\nAPI keys require `webhook-deliveries:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "deliveryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the delivery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "attemptId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the attempt.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__OrganizationWebhookDeliveryAttempt"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/projects/{projectId}/webhook-deliveries": {
      "get": {
        "operationId": "listProjectWebhookDeliveries",
        "tags": [
          "webhook deliveries"
        ],
        "summary": "List project webhook deliveries",
        "description": "Lists logical webhook deliveries owned by the exact project in the route.\n\nRequires `webhook-deliveries:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "webhookId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the webhook.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "eventId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "pending",
                "delivering",
                "retrying",
                "succeeded",
                "failed"
              ]
            },
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending` | Pending. |\n| `delivering` | Delivering. |\n| `retrying` | Retrying. |\n| `succeeded` | Succeeded. |\n| `failed` | Failed. |"
          },
          {
            "name": "since",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Specifies since for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          {
            "name": "until",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Specifies until for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies cursor for this query parameter."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__ProjectWebhookDelivery"
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CursorPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/projects/{projectId}/webhook-deliveries/{deliveryId}": {
      "get": {
        "operationId": "getProjectWebhookDelivery",
        "tags": [
          "webhook deliveries"
        ],
        "summary": "Get a project webhook delivery",
        "description": "Returns one logical webhook delivery owned by the exact project.\n\nRequires `webhook-deliveries:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "deliveryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the delivery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ProjectWebhookDelivery"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/projects/{projectId}/webhook-deliveries/{deliveryId}/retry": {
      "post": {
        "operationId": "retryProjectWebhookDelivery",
        "tags": [
          "webhook deliveries"
        ],
        "summary": "Retry a project webhook delivery",
        "description": "Appends a new immutable attempt to the same logical delivery owned by the exact project.\n\nRequires `webhook-deliveries:retry`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "deliveryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the delivery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "description": "Specifies idempotency key for this header parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ProjectWebhookDeliveryRetryReceipt"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          },
          "422": {
            "$ref": "#/components/responses/platform__Unprocessable"
          }
        }
      }
    },
    "/platform/projects/{projectId}/webhook-deliveries/{deliveryId}/attempts": {
      "get": {
        "operationId": "listProjectWebhookDeliveryAttempts",
        "tags": [
          "webhook deliveries"
        ],
        "summary": "List project webhook delivery attempts",
        "description": "Lists immutable network attempts for one project webhook delivery.\n\nRequires `webhook-deliveries:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "deliveryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the delivery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies cursor for this query parameter."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__ProjectWebhookDeliveryAttempt"
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CursorPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/projects/{projectId}/webhook-deliveries/{deliveryId}/attempts/{attemptId}": {
      "get": {
        "operationId": "getProjectWebhookDeliveryAttempt",
        "tags": [
          "webhook deliveries"
        ],
        "summary": "Get a project webhook delivery attempt",
        "description": "Returns one immutable network attempt owned by the exact project.\n\nRequires `webhook-deliveries:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "deliveryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the delivery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "attemptId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the attempt.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ProjectWebhookDeliveryAttempt"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/operations": {
      "get": {
        "operationId": "listPlatformOperations",
        "tags": [
          "operations"
        ],
        "summary": "List operations",
        "description": "Lists asynchronous operations visible to the credential, newest first. Team keys and dashboard members see team-owned operations and every project's operations; supply projectId to return one project's operations. Project tokens see only their own project. Filter by status, kind, resource (resourceType and resourceId together), and creation time. A cursor carries the filters of the page that issued it and cannot be combined with new filters.\n\nRequires `operations:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Return only this project's operations. Project tokens may pass only their own project."
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "pending",
                "running",
                "action_required",
                "cancelling",
                "succeeded",
                "failed",
                "cancelled"
              ]
            },
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending` | Pending. |\n| `running` | Running. |\n| `action_required` | Action required. |\n| `cancelling` | Cancelling. |\n| `succeeded` | Succeeded. |\n| `failed` | Failed. |\n| `cancelled` | Cancelled. |"
          },
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "auth_projection_repair",
                "session_lifecycle",
                "auth_session_purge",
                "label_projection_purge",
                "billing_reconciliation",
                "auto_top_up",
                "campaign",
                "production_enrollment",
                "retention_sweep",
                "webhook_redrive"
              ]
            },
            "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `auth_projection_repair` | Auth projection repair. |\n| `session_lifecycle` | Session lifecycle. |\n| `auth_session_purge` | Auth session purge. |\n| `label_projection_purge` | Label projection purge. |\n| `billing_reconciliation` | Billing reconciliation. |\n| `auto_top_up` | Auto top up. |\n| `campaign` | Campaign. |\n| `production_enrollment` | Production enrollment. |\n| `retention_sweep` | Retention sweep. |\n| `webhook_redrive` | Webhook redrive. |"
          },
          {
            "name": "resourceType",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Type of resource affected by this event."
          },
          {
            "name": "resourceId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the resource affected by this event."
          },
          {
            "name": "since",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Specifies since for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          {
            "name": "until",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Specifies until for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies cursor for this query parameter."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__Operation"
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CursorPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/operations/{operationId}": {
      "get": {
        "operationId": "getPlatformOperation",
        "tags": [
          "operations"
        ],
        "summary": "Get an operation",
        "description": "Returns one asynchronous operation. Supply wait (0-30 seconds; 0 returns immediately) to hold the request until the operation reaches a terminal status (succeeded, failed, or cancelled), its sequence exceeds afterSequence, or the wait expires. The response is the operation's state at that moment; a 200 after an expired wait does not mean the operation finished. Operations outside the credential's team or project return 404.\n\nRequires `operations:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Return only this project's operations. Project tokens may pass only their own project."
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "wait",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 30,
              "default": 0,
              "description": "Seconds to hold the request while the operation is not terminal. 0 returns immediately."
            },
            "description": "Specifies wait for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `30` (inclusive) |"
          },
          {
            "name": "afterSequence",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64",
              "minimum": 0,
              "description": "With wait, return as soon as the operation's sequence is greater than this value."
            },
            "description": "Specifies after sequence for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |\n| Format | `int64` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__Operation"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/operations/{operationId}/transitions": {
      "get": {
        "operationId": "listPlatformOperationTransitions",
        "tags": [
          "operations"
        ],
        "summary": "List operation transitions",
        "description": "Lists immutable status transitions for one operation in ascending sequence.\n\nRequires `operations:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Return only this project's operations. Project tokens may pass only their own project."
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "afterSequence",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64",
              "minimum": 0
            },
            "description": "Specifies after sequence for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |\n| Format | `int64` |"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies cursor for this query parameter."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__OperationTransition"
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CursorPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/operations/{operationId}/cancel": {
      "post": {
        "operationId": "cancelPlatformOperation",
        "tags": [
          "operations"
        ],
        "summary": "Cancel an operation",
        "description": "Requests cancellation after transactionally rechecking that the operation is cancellable. Only operations whose capabilities.cancellable is true accept cancellation: running or action-required campaign and production-enrollment operations. The operation moves to cancelling and later settles as cancelled or another terminal status. Other operations return 409 operation_conflict with the current operation. Retrying with the same Idempotency-Key replays the original receipt.\n\nRequires `operations:cancel`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "description": "Specifies idempotency key for this header parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__OperationCancellationReceipt"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__OperationCancellationConflict"
          }
        }
      }
    },
    "/platform/projects/{projectId}/operations": {
      "get": {
        "operationId": "listProjectOperations",
        "tags": [
          "operations"
        ],
        "summary": "List project operations",
        "description": "Lists asynchronous operations owned by the exact project in the route.\n\nRequires `operations:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "pending",
                "running",
                "action_required",
                "cancelling",
                "succeeded",
                "failed",
                "cancelled"
              ]
            },
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending` | Pending. |\n| `running` | Running. |\n| `action_required` | Action required. |\n| `cancelling` | Cancelling. |\n| `succeeded` | Succeeded. |\n| `failed` | Failed. |\n| `cancelled` | Cancelled. |"
          },
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "auth_projection_repair",
                "session_lifecycle",
                "auth_session_purge",
                "label_projection_purge",
                "billing_reconciliation",
                "auto_top_up",
                "campaign",
                "production_enrollment",
                "retention_sweep",
                "webhook_redrive"
              ]
            },
            "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `auth_projection_repair` | Auth projection repair. |\n| `session_lifecycle` | Session lifecycle. |\n| `auth_session_purge` | Auth session purge. |\n| `label_projection_purge` | Label projection purge. |\n| `billing_reconciliation` | Billing reconciliation. |\n| `auto_top_up` | Auto top up. |\n| `campaign` | Campaign. |\n| `production_enrollment` | Production enrollment. |\n| `retention_sweep` | Retention sweep. |\n| `webhook_redrive` | Webhook redrive. |"
          },
          {
            "name": "resourceType",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Type of resource affected by this event."
          },
          {
            "name": "resourceId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the resource affected by this event."
          },
          {
            "name": "since",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Specifies since for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          {
            "name": "until",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Specifies until for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies cursor for this query parameter."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__ProjectOperation"
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CursorPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/projects/{projectId}/operations/{operationId}": {
      "get": {
        "operationId": "getProjectOperation",
        "tags": [
          "operations"
        ],
        "summary": "Get a project operation",
        "description": "Returns one asynchronous operation owned by the exact project in the route. Supply wait (0-30 seconds; 0 returns immediately) to hold the request until the operation reaches a terminal status, its sequence exceeds afterSequence, or the wait expires.\n\nRequires `operations:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "wait",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 30,
              "default": 0,
              "description": "Seconds to hold the request while the operation is not terminal. 0 returns immediately."
            },
            "description": "Specifies wait for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `30` (inclusive) |"
          },
          {
            "name": "afterSequence",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64",
              "minimum": 0,
              "description": "With wait, return as soon as the operation's sequence is greater than this value."
            },
            "description": "Specifies after sequence for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |\n| Format | `int64` |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ProjectOperation"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/projects/{projectId}/operations/{operationId}/transitions": {
      "get": {
        "operationId": "listProjectOperationTransitions",
        "tags": [
          "operations"
        ],
        "summary": "List project operation transitions",
        "description": "Lists immutable transitions for one project-owned operation in ascending sequence.\n\nRequires `operations:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "afterSequence",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64",
              "minimum": 0
            },
            "description": "Specifies after sequence for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |\n| Format | `int64` |"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies cursor for this query parameter."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__OperationTransition"
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CursorPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/projects/{projectId}/operations/{operationId}/cancel": {
      "post": {
        "operationId": "cancelProjectOperation",
        "tags": [
          "operations"
        ],
        "summary": "Cancel a project operation",
        "description": "Requests cancellation for an operation in the exact project after transactionally rechecking that it is cancellable.\n\nRequires `operations:cancel`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "description": "Specifies idempotency key for this header parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__ProjectOperationCancellationReceipt"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__OperationCancellationConflict"
          }
        }
      }
    },
    "/platform/customers": {
      "get": {
        "operationId": "listCustomers",
        "tags": [
          "customers"
        ],
        "summary": "List Customers",
        "description": "Lists masked Customer summaries in the exact authenticated project with cursor pagination and filters.\n\nRequires `customers:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the Polymorfa project that owns this resource."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies cursor for this query parameter."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Specifies search for this query parameter."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "active",
                "archiving",
                "archived",
                "all"
              ]
            },
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `active` | Active. |\n| `archiving` | Archiving. |\n| `archived` | Archived. |\n| `all` | All. |"
          },
          {
            "name": "isDefault",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Whether default."
          },
          {
            "name": "hasNumbers",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Whether numbers."
          },
          {
            "name": "needsAttention",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Whether needs attention."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__CustomerSummary"
                      },
                      "description": "Structured data carried by this object."
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CursorPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      },
      "post": {
        "operationId": "createCustomer",
        "tags": [
          "customers"
        ],
        "summary": "Create a Customer",
        "description": "Creates a Customer with optional name and caller-defined external identifier.\n\nRequires `customers:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "description": "Specifies idempotency key for this header parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__CreateCustomerRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__Customer"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/customers/{customerId}": {
      "get": {
        "operationId": "getCustomer",
        "tags": [
          "customers"
        ],
        "summary": "Get a Customer",
        "description": "Returns one Customer from the exact authenticated project.\n\nRequires `customers:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "projectId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the Polymorfa project that owns this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__Customer"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      },
      "patch": {
        "operationId": "updateCustomer",
        "tags": [
          "customers"
        ],
        "summary": "Update a Customer",
        "description": "Updates supplied Customer profile fields. Null clears an optional field.\n\nRequires `customers:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__UpdateCustomerRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__Customer"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/customers/{customerId}/archive": {
      "post": {
        "operationId": "archiveCustomer",
        "tags": [
          "customers"
        ],
        "summary": "Archive a Customer",
        "description": "Archives a non-default Customer. The default Customer cannot be archived.\n\nRequires `customers:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "description": "Specifies idempotency key for this header parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__CustomerProjectRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__Customer"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/customers/{customerId}/restore": {
      "post": {
        "operationId": "restoreCustomer",
        "tags": [
          "customers"
        ],
        "summary": "Restore a Customer",
        "description": "Restores an archived Customer.\n\nRequires `customers:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "description": "Specifies idempotency key for this header parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__CustomerProjectRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__Customer"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/customers/{customerId}/numbers": {
      "get": {
        "operationId": "listCustomerNumbers",
        "tags": [
          "customers"
        ],
        "summary": "List Customer Numbers",
        "description": "Lists Numbers assigned to one Customer in the exact project.\n\nRequires `customers:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "projectId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the Polymorfa project that owns this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__CustomerNumber"
                      },
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/customers/{customerId}/events": {
      "get": {
        "operationId": "listCustomerEvents",
        "tags": [
          "customers"
        ],
        "summary": "List recent Customer events",
        "description": "Lists the newest Customer lifecycle events with safe metadata. Actor identities, message content, phone values, invitation tokens, and URLs are excluded.\n\nRequires `customers:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "projectId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the Polymorfa project that owns this resource."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__CustomerEvent"
                      },
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/customers/{customerId}/pairing-links": {
      "post": {
        "operationId": "createCustomerPairingLink",
        "tags": [
          "customers"
        ],
        "summary": "Create a Customer pairing link",
        "description": "Creates a revocable Customer invitation. The raw URL is returned only in this response.\n\nRequires `customers:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "description": "Specifies idempotency key for this header parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__CreateCustomerPairingLinkRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CreatedCustomerPairingLink"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      },
      "get": {
        "operationId": "listCustomerPairingLinks",
        "tags": [
          "customers"
        ],
        "summary": "List Customer pairing links",
        "description": "Lists safe pairing-link metadata. Raw invitation tokens and URLs are never returned.\n\nRequires `customers:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "projectId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the Polymorfa project that owns this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/platform__CustomerPairingLink"
                      },
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/customers/{customerId}/pairing-links/{pairingLinkId}": {
      "delete": {
        "operationId": "revokeCustomerPairingLink",
        "tags": [
          "customers"
        ],
        "summary": "Revoke a Customer pairing link",
        "description": "Revokes an open pairing link.\n\nRequires `customers:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "pairingLinkId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the pairing link."
          },
          {
            "name": "projectId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the Polymorfa project that owns this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CustomerPairingLink"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/customers/{customerId}/numbers/{sessionId}/transfer": {
      "post": {
        "operationId": "transferCustomerNumber",
        "tags": [
          "customers"
        ],
        "summary": "Transfer a Customer Number",
        "description": "Atomically transfers one eligible Number from the explicitly confirmed source Customer to the destination Customer.\n\nRequires `customers:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "Database session UUID or stable session slug.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |",
            "schema": {
              "$ref": "#/components/schemas/platform__SessionIdentifier"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "description": "Specifies idempotency key for this header parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__TransferCustomerNumberRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CustomerNumber"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "409": {
            "$ref": "#/components/responses/platform__Conflict"
          }
        }
      }
    },
    "/platform/members": {
      "get": {
        "operationId": "listMembers",
        "tags": [
          "members"
        ],
        "summary": "List members",
        "description": "Public Management API. API keys require `sessions:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__DataEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/audit": {
      "get": {
        "operationId": "listAuditLogs",
        "tags": [
          "audit"
        ],
        "summary": "List audit logs",
        "description": "Public Management API. API keys require `sessions:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__DataEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/incidents": {
      "get": {
        "operationId": "listSecurityIncidents",
        "tags": [
          "incidents"
        ],
        "summary": "List security incidents",
        "description": "Public Management API. API keys require `sessions:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__DataEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/incidents/{incidentId}/acknowledge": {
      "post": {
        "operationId": "acknowledgeSecurityIncident",
        "tags": [
          "incidents"
        ],
        "summary": "Acknowledge security incident",
        "description": "Public Management API. API keys require `sessions:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "incidentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the incident."
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__DataEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/media/{mediaId}": {
      "get": {
        "operationId": "getMediaUrl",
        "tags": [
          "media"
        ],
        "summary": "Get media url",
        "description": "Public Management API. API keys require `media:read`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "mediaId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the media."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__DataEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      },
      "delete": {
        "operationId": "deleteMedia",
        "tags": [
          "media"
        ],
        "summary": "Delete media",
        "description": "Public Management API. API keys require `media:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "mediaId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Identifier for the media."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__DataEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/media/uploads": {
      "post": {
        "operationId": "createMediaUploadUrl",
        "tags": [
          "media"
        ],
        "summary": "Create media upload url",
        "description": "Public Management API. API keys require `media:manage`. Project tokens are not accepted.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/platform__DataEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/quicklink": {
      "get": {
        "operationId": "getQuickLinkSettings",
        "tags": [
          "quicklink"
        ],
        "summary": "Read QuickLink settings",
        "description": "Returns the saved QuickLink settings for the authenticated team or one project, or null when nothing has been saved for that scope. There is no separate read permission: reading and updating both require `quicklink:manage`, because the settings include the redirect allowlist and branding that only a QuickLink manager should see.\n\nRequires `quicklink:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Identifier of the Polymorfa project that owns this resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "anyOf": [
                        {
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/platform__QuickLinkSettings"
                            }
                          ]
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Structured data carried by this object.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `theme`: `light` or `dark` or `system`; Field `shape`: `square` or `rounded` or `pill` or `null`; Field `logoMode`: `none` or `custom` or `organization` or `project`; Field `historySync`: `ask` or `force_on` or `force_off`; Field `defaultMethod`: `qr` or `pairing` or `null`; Required fields: `id`, `projectId`, `enabled`, `successCallbackUrl`, `failureCallbackUrl`, `businessName`, `headline`, `description`, `successMessage`, `supportUrl`, `privacyUrl`, `termsUrl`, `accent`, `theme`, `hideWatermark`, `allowPhoneChange`, `shape`, `radiusPx`, `logoMode`, `logoStorageId`, `logoSourceStorageId`, `logoUrl`, `historySync`, `methods`, `defaultMethod`, `createdAt`, `updatedAt` |\n| Alternative 2 | `null` |"
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      },
      "put": {
        "operationId": "updateQuickLinkSettings",
        "tags": [
          "quicklink"
        ],
        "summary": "Update QuickLink settings",
        "description": "Updates the saved QuickLink settings for the authenticated team or project and returns the saved record. Setting `hideWatermark` to true without an active Branded QuickLink add-on returns 402 with code `addon_required`.\n\nRequires `quicklink:manage`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/platform__UpdateQuickLinkSettingsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__QuickLinkSettings"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/platform__AddonRequired"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/calls": {
      "get": {
        "operationId": "listCallRecords",
        "tags": [
          "calls"
        ],
        "summary": "List call records",
        "description": "Lists call detail records, newest first. Filter by project, number, direction, connection, outcome and start time. The other party appears only as `peerRef`, a team-specific pseudonym; phone numbers are never returned. Pass `page.nextCursor` as `cursor` with the same filters to read the next page.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "description": "Project to read. Omit to total every project in the organization.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sessionId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "description": "Session name of one number."
            },
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          },
          {
            "name": "direction",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "inbound",
                "outbound"
              ]
            },
            "description": "Specifies direction for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inbound` | Inbound. |\n| `outbound` | Outbound. |"
          },
          {
            "name": "upstream",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "linked_device",
                "cloud_api"
              ],
              "description": "How the number connects to WhatsApp."
            },
            "description": "Specifies upstream for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `linked_device` | Linked device. |\n| `cloud_api` | Cloud api. |"
          },
          {
            "name": "outcome",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "answered",
                "missed",
                "declined",
                "failed",
                "in_progress"
              ],
              "description": "How the call went. `answered`: media connected, including answered calls still in progress. `declined`: declined by a participant or the other party, or the line was busy. `missed`: nobody answered before ringing stopped or the caller hung up. `failed`: ended before it connected for any other reason, such as a connection or capacity failure. `in_progress`: still ringing."
            },
            "description": "Specifies outcome for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `answered` | Answered. |\n| `missed` | Missed. |\n| `declined` | Declined. |\n| `failed` | Failed. |\n| `in_progress` | In progress. |"
          },
          {
            "name": "since",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "description": "Include calls that started at or after this time."
            },
            "description": "Specifies since for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          {
            "name": "until",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "description": "Include calls that started before this time."
            },
            "description": "Specifies until for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "description": "Specifies limit for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "description": "Specifies cursor for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "type": "array",
                      "maxItems": 100,
                      "items": {
                        "$ref": "#/components/schemas/platform__CallRecord"
                      },
                      "description": "Structured data carried by this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `100` items |"
                    },
                    "page": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CursorPageMetadata"
                        }
                      ],
                      "description": "Specifies page for this schema."
                    }
                  },
                  "required": [
                    "data",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          }
        }
      }
    },
    "/platform/calls/stats": {
      "get": {
        "operationId": "getCallStats",
        "tags": [
          "calls"
        ],
        "summary": "Get call statistics",
        "description": "Returns call volume, outcomes, answer rate and connected duration for a time range, grouped by day, hour, number or outcome, with an hour-of-week heatmap. Filters match the call records endpoints. Without `since` and `until` the range is the last 7 days. Day and hour groups use the requested `timezone` and include empty buckets.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "description": "Project to read. Omit to total every project in the organization.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sessionId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "description": "Session name of one number."
            },
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          },
          {
            "name": "direction",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "inbound",
                "outbound"
              ]
            },
            "description": "Specifies direction for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inbound` | Inbound. |\n| `outbound` | Outbound. |"
          },
          {
            "name": "upstream",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "linked_device",
                "cloud_api"
              ],
              "description": "How the number connects to WhatsApp."
            },
            "description": "Specifies upstream for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `linked_device` | Linked device. |\n| `cloud_api` | Cloud api. |"
          },
          {
            "name": "outcome",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "answered",
                "missed",
                "declined",
                "failed",
                "in_progress"
              ],
              "description": "How the call went. `answered`: media connected, including answered calls still in progress. `declined`: declined by a participant or the other party, or the line was busy. `missed`: nobody answered before ringing stopped or the caller hung up. `failed`: ended before it connected for any other reason, such as a connection or capacity failure. `in_progress`: still ringing."
            },
            "description": "Specifies outcome for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `answered` | Answered. |\n| `missed` | Missed. |\n| `declined` | Declined. |\n| `failed` | Failed. |\n| `in_progress` | In progress. |"
          },
          {
            "name": "since",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "description": "Include calls that started at or after this time."
            },
            "description": "Specifies since for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          {
            "name": "until",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "description": "Include calls that started before this time."
            },
            "description": "Specifies until for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          {
            "name": "groupBy",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "day",
                "hour",
                "session",
                "outcome"
              ],
              "default": "day",
              "description": "`day` and `hour` return one group per bucket in `timezone`, covering at most 366 and 31 days. `session` returns one group per number, most calls first, up to 500. `outcome` returns one group per outcome."
            },
            "description": "Specifies group by for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `day` | Day. |\n| `hour` | Hour. |\n| `session` | Session. |\n| `outcome` | Outcome. |"
          },
          {
            "name": "timezone",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "UTC",
              "maxLength": 64,
              "example": "Europe/Lisbon",
              "description": "IANA time zone name for day and hour buckets and the heatmap, such as `UTC`, `CET` or `Europe/Lisbon`; case does not matter and the response carries the canonical name. UTC offsets and POSIX strings such as `UTC+3` are not accepted."
            },
            "description": "Specifies timezone for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `64` characters |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CallStats"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "503": {
            "$ref": "#/components/responses/platform__CallStatsTooSlow"
          }
        }
      }
    },
    "/platform/calls/{callId}": {
      "get": {
        "operationId": "getCallRecord",
        "tags": [
          "calls"
        ],
        "summary": "Get a call record and history",
        "description": "Returns one stored call with its participant and connection lifetimes, bounded event history, media measurements and app-reported diagnostics. Requires sessions:read. Project credentials can read only the call's original owning project, including after a number is deleted. Unknown measurements are null. Webhook deliveries require the separate webhook-deliveries:read endpoints. This read does not retrieve audio, video or event payloads and does not control a live call.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "callId",
            "in": "path",
            "required": true,
            "description": "Call identifier.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |\n| Pattern | `^[\\x21-\\x7e]+$` |",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "pattern": "^[\\x21-\\x7e]+$"
            }
          },
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "description": "Project to read. Omit to total every project in the organization.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__CallRecordDetail"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          }
        }
      }
    },
    "/platform/analytics": {
      "get": {
        "operationId": "getWhatsAppAnalytics",
        "tags": [
          "Analytics"
        ],
        "summary": "Get WhatsApp number analytics",
        "description": "Aggregated number activity and operational vitals. Returns disabled with null summary and empty data until a team owner or admin enables Analytics. Conversation rates use completed 24-hour direct-chat cohorts, booked in the period when they mature; missing or dropped cohort coverage returns null rates. Read means an observed read receipt, not a verified app open. No contact identifiers or message content. Linked Devices telemetry only; unsupported or unobserved numbers carry measured=false. Bucket timestamps use UTC. Activity series use hourly buckets for ranges up to 48 hours and daily buckets for longer ranges. Call series use daily buckets. Message metadata compares direct sends and completed conversations by type, coarse text/caption length, source, calling code and observed device count. Device observations are bounded samples. Calling-code shares describe conversations, not distinct people or location. Presence signals require existing subscriptions. Primary phone activity spans end at their last observed signal and close after 15 minutes without evidence. Quiet gaps end at the next observed signal. Duration sums and averages count completed intervals and exclude open or restart-censored intervals; they do not measure phone online/offline or power state. Metadata collection uses the current team opt-in; disable erases these aggregates and stale queued metadata is rejected. Calls aggregate retained records by their immutable original number/project ownership, including supported Official API calls; message measured/coverage fields do not apply to calls. Call series groups starts by UTC day. Answer rate excludes still-ringing calls; timing fields have explicit observation counts. Missed-call follow-up observes an answered outgoing call to the same pseudonymous contact within 24h, including after the requested end; only completed windows with a known contact form the denominator. It does not prove callback intent. Quality uses reported measurements, latest cumulative app reports per connection and per-call averages. Breakdown counts can overlap. Disabling hides this call view without deleting operational call history. Device analytics estimates sending client families from message ID prefixes, not verified hardware. Customer/account distributions count observed live direct messages, not unique people or installed devices; unknown is included. Older retained buckets lack device coverage and return null shares. Each number exposes at most 25 of its own device indexes, coarse reported class and last observed sending activity. A list change makes inventory membership/count unknown until another full list. Inventory is null in the combined summary. No recipient device identity or raw message ID is retained by this analytics block. Joint conversation breakdown rows retain first outgoing message type, length band, send source, inferred calling code and observed customer device-count class together with UTC completion bucket. Combine rows matching all selected categories to drill into countries and message attributes without inferring intersections from independent marginal totals. Calling codes do not establish current location and shared codes do not identify a unique country. Counts describe completed 24-hour conversation cohorts, not distinct customers. Rates and averages are null when coverage is missing, dropped or truncated. At most 4096 number/time/category groups are returned in one scope, prioritizing largest groups and marking truncation; raw reply latency sums support weighted aggregation. Connection/call vitals and live message platform distributions are separate measurements, not recipient-country filtered cohorts. Recipient country and recipient linked-device-count fields refine joint conversation metadata. Recipient activity remains hourly even for long date ranges, supporting incoming-message timing in an explicit time zone. Delivery signals do not prove reading; read signals are distinct. Presence subscriptions are best-effort around permitted direct sends, reuse a live bounded local lease, preserve observation-off policies and never poll every contact. Missing presence is Unknown, not offline.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "query",
            "required": false,
            "description": "Project to read. Omit to total every project in the organization.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sessionId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Number record UUID."
            },
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "start",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Unix milliseconds; maximum range 366 days."
            },
            "description": "Specifies start for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Unix milliseconds; maximum range 366 days."
            },
            "description": "Specifies end for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__WhatsAppAnalytics"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "503": {
            "$ref": "#/components/responses/platform__PropagationPending"
          }
        }
      }
    },
    "/platform/projects/{projectId}/analytics": {
      "get": {
        "operationId": "getProjectWhatsAppAnalytics",
        "tags": [
          "Analytics"
        ],
        "summary": "Get WhatsApp number analytics",
        "description": "Aggregated number activity and operational vitals. Returns disabled with null summary and empty data until a team owner or admin enables Analytics. Conversation rates use completed 24-hour direct-chat cohorts, booked in the period when they mature; missing or dropped cohort coverage returns null rates. Read means an observed read receipt, not a verified app open. No contact identifiers or message content. Linked Devices telemetry only; unsupported or unobserved numbers carry measured=false. Bucket timestamps use UTC. Activity series use hourly buckets for ranges up to 48 hours and daily buckets for longer ranges. Call series use daily buckets. Message metadata compares direct sends and completed conversations by type, coarse text/caption length, source, calling code and observed device count. Device observations are bounded samples. Calling-code shares describe conversations, not distinct people or location. Presence signals require existing subscriptions. Primary phone activity spans end at their last observed signal and close after 15 minutes without evidence. Quiet gaps end at the next observed signal. Duration sums and averages count completed intervals and exclude open or restart-censored intervals; they do not measure phone online/offline or power state. Metadata collection uses the current team opt-in; disable erases these aggregates and stale queued metadata is rejected. Calls aggregate retained records by their immutable original number/project ownership, including supported Official API calls; message measured/coverage fields do not apply to calls. Call series groups starts by UTC day. Answer rate excludes still-ringing calls; timing fields have explicit observation counts. Missed-call follow-up observes an answered outgoing call to the same pseudonymous contact within 24h, including after the requested end; only completed windows with a known contact form the denominator. It does not prove callback intent. Quality uses reported measurements, latest cumulative app reports per connection and per-call averages. Breakdown counts can overlap. Disabling hides this call view without deleting operational call history. Device analytics estimates sending client families from message ID prefixes, not verified hardware. Customer/account distributions count observed live direct messages, not unique people or installed devices; unknown is included. Older retained buckets lack device coverage and return null shares. Each number exposes at most 25 of its own device indexes, coarse reported class and last observed sending activity. A list change makes inventory membership/count unknown until another full list. Inventory is null in the combined summary. No recipient device identity or raw message ID is retained by this analytics block. Joint conversation breakdown rows retain first outgoing message type, length band, send source, inferred calling code and observed customer device-count class together with UTC completion bucket. Combine rows matching all selected categories to drill into countries and message attributes without inferring intersections from independent marginal totals. Calling codes do not establish current location and shared codes do not identify a unique country. Counts describe completed 24-hour conversation cohorts, not distinct customers. Rates and averages are null when coverage is missing, dropped or truncated. At most 4096 number/time/category groups are returned in one scope, prioritizing largest groups and marking truncation; raw reply latency sums support weighted aggregation. Connection/call vitals and live message platform distributions are separate measurements, not recipient-country filtered cohorts. Recipient country and recipient linked-device-count fields refine joint conversation metadata. Recipient activity remains hourly even for long date ranges, supporting incoming-message timing in an explicit time zone. Delivery signals do not prove reading; read signals are distinct. Presence subscriptions are best-effort around permitted direct sends, reuse a live bounded local lease, preserve observation-off policies and never poll every contact. Missing presence is Unknown, not offline.\n\nRequires `sessions:read`. Project tokens only access resources in their own project.",
        "security": [
          {
            "platform__ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "sessionId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Number record UUID."
            },
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          {
            "name": "start",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Unix milliseconds; maximum range 366 days."
            },
            "description": "Specifies start for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Unix milliseconds; maximum range 366 days."
            },
            "description": "Specifies end for this query parameter.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string"
                },
                "description": "Stable request correlation identifier."
              },
              "X-Trace-Id": {
                "schema": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{32}$"
                },
                "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
              },
              "Polymorfa-Version": {
                "schema": {
                  "type": "string"
                },
                "description": "API version applied to this response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/platform__WhatsAppAnalytics"
                        }
                      ],
                      "description": "Structured data carried by this object."
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/platform__BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/platform__Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/platform__Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/platform__NotFound"
          },
          "503": {
            "$ref": "#/components/responses/platform__PropagationPending"
          }
        }
      }
    }
  },
  "webhooks": {
    "message.received": {
      "post": {
        "operationId": "onMessageReceived",
        "summary": "Incoming message",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__MessageReceivedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "message.sent": {
      "post": {
        "operationId": "onMessageSent",
        "summary": "Outgoing message successfully sent",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__MessageSentEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "message.ack": {
      "post": {
        "operationId": "onMessageAck",
        "summary": "Delivery acknowledgement",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__MessageAckEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "message.revoked": {
      "post": {
        "operationId": "onMessageRevoked",
        "summary": "Message revoked",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__MessageRevokedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "message.reaction": {
      "post": {
        "operationId": "onMessageReaction",
        "summary": "Reaction added or removed",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__MessageReactionEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "message.edited": {
      "post": {
        "operationId": "onMessageEdited",
        "summary": "Message edited",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__MessageEditedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "message.update": {
      "post": {
        "operationId": "onMessageUpdate",
        "summary": "Generic message update",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__MessageUpdateEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "message.delete": {
      "post": {
        "operationId": "onMessageDelete",
        "summary": "Message deleted from another device",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__MessageDeleteEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "message.vote": {
      "post": {
        "operationId": "onMessageVote",
        "summary": "Poll vote cast",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__MessageVoteEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "session.status": {
      "post": {
        "operationId": "onSessionStatus",
        "summary": "Session status change",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__SessionStatusEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "session.connected": {
      "post": {
        "operationId": "onSessionConnected",
        "summary": "Session connected to WhatsApp",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__SessionConnectedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "session.logged_out": {
      "post": {
        "operationId": "onSessionLoggedOut",
        "summary": "Session logged out",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__SessionLoggedOutEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "session.phone_offline": {
      "post": {
        "operationId": "onSessionPhoneOffline",
        "summary": "Primary phone has been offline for an extended period",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__SessionPhoneOfflineEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "session.capabilities_updated": {
      "post": {
        "operationId": "onSessionCapabilitiesUpdated",
        "summary": "The number’s WhatsApp capabilities changed",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__SessionCapabilitiesUpdatedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "session.restriction_updated": {
      "post": {
        "operationId": "onSessionRestrictionUpdated",
        "summary": "A WhatsApp restriction on the number started, changed or ended",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__SessionRestrictionUpdatedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "group.update": {
      "post": {
        "operationId": "onGroupUpdate",
        "summary": "Group metadata changed",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__GroupUpdateEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "group.participant": {
      "post": {
        "operationId": "onGroupParticipant",
        "summary": "Group participants added/removed/promoted/demoted",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__GroupParticipantEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "presence.update": {
      "post": {
        "operationId": "onPresenceUpdate",
        "summary": "User or chat presence change",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__PresenceUpdateEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "contact.update": {
      "post": {
        "operationId": "onContactUpdate",
        "summary": "Contact info changed",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__ContactUpdateEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "contact.opted_out": {
      "post": {
        "operationId": "onContactOptedOut",
        "summary": "A contact opted out of campaigns by replying with an opt-out keyword",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__ContactOptedOutEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "contact.opted_in": {
      "post": {
        "operationId": "onContactOptedIn",
        "summary": "A contact reversed a keyword opt-out by replying with an opt-in keyword",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__ContactOptedInEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "chat.archive": {
      "post": {
        "operationId": "onChatArchive",
        "summary": "Chat archived or pinned",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__ChatArchiveEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "chat.mute": {
      "post": {
        "operationId": "onChatMute",
        "summary": "Chat muted or unmuted",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__ChatMuteEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "chat.read": {
      "post": {
        "operationId": "onChatRead",
        "summary": "Chat marked read or unread",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__ChatReadEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "chat.clear": {
      "post": {
        "operationId": "onChatClear",
        "summary": "Chat cleared",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__ChatClearEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "chat.delete": {
      "post": {
        "operationId": "onChatDelete",
        "summary": "Chat deleted",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__ChatDeleteEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "call.received": {
      "post": {
        "operationId": "onCallReceived",
        "summary": "Incoming call",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CallReceivedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "call.missed": {
      "post": {
        "operationId": "onCallMissed",
        "summary": "Call missed",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CallMissedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "call.accepted": {
      "post": {
        "operationId": "onCallAccepted",
        "summary": "Call accepted",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CallAcceptedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "call.rejected": {
      "post": {
        "operationId": "onCallRejected",
        "summary": "Call rejected",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CallRejectedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "call.ended": {
      "post": {
        "operationId": "onCallEnded",
        "summary": "Call ended",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CallEndedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "call.telemetry": {
      "post": {
        "operationId": "onCallTelemetry",
        "summary": "Call telemetry",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CallTelemetryEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "call.participant_joined": {
      "post": {
        "operationId": "onCallParticipantJoined",
        "summary": "Participant joined a call",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CallParticipantJoinedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "call.participant_state": {
      "post": {
        "operationId": "onCallParticipantState",
        "summary": "Participant call state changed",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CallParticipantStateEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "call.participant_left": {
      "post": {
        "operationId": "onCallParticipantLeft",
        "summary": "Participant left a call",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CallParticipantLeftEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "call.connection_joined": {
      "post": {
        "operationId": "onCallConnectionJoined",
        "summary": "Connection joined a call",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CallConnectionJoinedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "call.permission_changed": {
      "post": {
        "operationId": "onCallPermissionChanged",
        "summary": "Call permission changed",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CallPermissionChangedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "call.connection_left": {
      "post": {
        "operationId": "onCallConnectionLeft",
        "summary": "Connection left a call",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CallConnectionLeftEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "usage.recorded": {
      "post": {
        "operationId": "onUsageRecorded",
        "summary": "Usage recorded",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__UsageRecordedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "newsletter.update": {
      "post": {
        "operationId": "onNewsletterUpdate",
        "summary": "Newsletter subscription change",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__NewsletterUpdateEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "blocklist.update": {
      "post": {
        "operationId": "onBlocklistUpdate",
        "summary": "Blocklist changed",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__BlocklistUpdateEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "labels.update": {
      "post": {
        "operationId": "onLabelsUpdate",
        "summary": "Label edited / associated / star toggled",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__LabelsUpdateEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "business.quick_reply.update": {
      "post": {
        "operationId": "onBusinessQuickReplyUpdate",
        "summary": "WhatsApp Business App quick reply changed",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__BusinessQuickReplyUpdateEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "contact.sync": {
      "post": {
        "operationId": "onContactSync",
        "summary": "WhatsApp Business app contact synchronization",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__ContactsSyncEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "message.echo": {
      "post": {
        "operationId": "onMessageEcho",
        "summary": "Message sent from the WhatsApp Business app",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__MessageEchoEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "history.sync": {
      "post": {
        "operationId": "onHistorySync",
        "summary": "History sync chunk",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__HistorySyncEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "command.result": {
      "post": {
        "operationId": "onCommandResult",
        "summary": "Async command completed",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CommandResultEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "customer.enabled": {
      "post": {
        "operationId": "onCustomerEnabled",
        "summary": "Customers enabled for a project",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CustomerEnabledEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "customer.created": {
      "post": {
        "operationId": "onCustomerCreated",
        "summary": "Customer created",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CustomerCreatedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "customer.updated": {
      "post": {
        "operationId": "onCustomerUpdated",
        "summary": "Customer updated",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CustomerUpdatedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "customer.archiving": {
      "post": {
        "operationId": "onCustomerArchiving",
        "summary": "Customer archival started",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CustomerArchivingEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "customer.archived": {
      "post": {
        "operationId": "onCustomerArchived",
        "summary": "Customer archived",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CustomerArchivedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "customer.restored": {
      "post": {
        "operationId": "onCustomerRestored",
        "summary": "Customer restored",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CustomerRestoredEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "customer.pairing_link.created": {
      "post": {
        "operationId": "onCustomerPairingLinkCreated",
        "summary": "Customer pairing link created",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CustomerPairingLinkCreatedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "customer.pairing_link.opened": {
      "post": {
        "operationId": "onCustomerPairingLinkOpened",
        "summary": "Customer pairing link opened",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CustomerPairingLinkOpenedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "customer.pairing_link.connected": {
      "post": {
        "operationId": "onCustomerPairingLinkConnected",
        "summary": "Customer pairing link connected",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CustomerPairingLinkConnectedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "customer.pairing_link.failed": {
      "post": {
        "operationId": "onCustomerPairingLinkFailed",
        "summary": "Customer pairing attempt failed",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CustomerPairingLinkFailedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "customer.pairing_link.expired": {
      "post": {
        "operationId": "onCustomerPairingLinkExpired",
        "summary": "Customer pairing link expired",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CustomerPairingLinkExpiredEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "customer.pairing_link.revoked": {
      "post": {
        "operationId": "onCustomerPairingLinkRevoked",
        "summary": "Customer pairing link revoked",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CustomerPairingLinkRevokedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "customer.number.attached": {
      "post": {
        "operationId": "onCustomerNumberAttached",
        "summary": "Number attached to a Customer",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CustomerNumberAttachedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "customer.number.transferred": {
      "post": {
        "operationId": "onCustomerNumberTransferred",
        "summary": "Number transferred to a Customer",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CustomerNumberTransferredEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "customer.number.disconnected": {
      "post": {
        "operationId": "onCustomerNumberDisconnected",
        "summary": "Customer Number disconnected",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CustomerNumberDisconnectedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "voice.asset_ready": {
      "post": {
        "operationId": "onVoiceAssetReady",
        "summary": "Audio asset ready",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__VoiceAssetReadyEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "voice.asset_failed": {
      "post": {
        "operationId": "onVoiceAssetFailed",
        "summary": "Audio asset failed",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__VoiceAssetFailedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "bansafe.action": {
      "post": {
        "operationId": "onBansafeAction",
        "summary": "Polymorfa applied, changed, or lifted a safety restriction on a number",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__BanSafeActionEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "bansafe.health_threshold": {
      "post": {
        "operationId": "onBansafeHealthThreshold",
        "summary": "A project's present Health rule crossed below its threshold",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__BanSafeHealthThresholdEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "bansafe.incident": {
      "post": {
        "operationId": "onBansafeIncident",
        "summary": "A restriction was recorded on a number, or the record of one settled",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__BanSafeIncidentEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "bansafe.claim": {
      "post": {
        "operationId": "onBansafeClaim",
        "summary": "A Ban Insurance claim was filed on a ban, decided, paid, or reversed",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__BanSafeClaimEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "message.failed": {
      "post": {
        "operationId": "onMessageFailed",
        "summary": "Outbound send failed, including a send refused by safety",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__MessageFailedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "template.status": {
      "post": {
        "operationId": "onTemplateStatus",
        "summary": "Message template approval status changed",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__TemplateStatusEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "campaign.paused": {
      "post": {
        "operationId": "onCampaignPaused",
        "summary": "Campaign paused",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CampaignPausedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "campaign.launched": {
      "post": {
        "operationId": "onCampaignLaunched",
        "summary": "Campaign began sending",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CampaignLaunchedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "campaign.resumed": {
      "post": {
        "operationId": "onCampaignResumed",
        "summary": "Campaign resumed sending",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CampaignResumedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "campaign.stopped": {
      "post": {
        "operationId": "onCampaignStopped",
        "summary": "Campaign stop settled",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CampaignStoppedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "campaign.rescheduled": {
      "post": {
        "operationId": "onCampaignRescheduled",
        "summary": "A scheduled campaign's start time moved",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CampaignRescheduledEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "campaign.completed": {
      "post": {
        "operationId": "onCampaignCompleted",
        "summary": "Campaign finished sending",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CampaignCompletedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "campaign.failed": {
      "post": {
        "operationId": "onCampaignFailed",
        "summary": "Campaign failed",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CampaignFailedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "campaign.recipient_sent": {
      "post": {
        "operationId": "onCampaignRecipientSent",
        "summary": "A campaign recipient was sent",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CampaignRecipientSentEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "campaign.recipient_delivered": {
      "post": {
        "operationId": "onCampaignRecipientDelivered",
        "summary": "A campaign recipient's first delivery receipt",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CampaignRecipientDeliveredEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "campaign.recipient_read": {
      "post": {
        "operationId": "onCampaignRecipientRead",
        "summary": "A campaign recipient's first read receipt",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CampaignRecipientReadEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "campaign.recipient_replied": {
      "post": {
        "operationId": "onCampaignRecipientReplied",
        "summary": "A campaign recipient's first attributed reply",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CampaignRecipientRepliedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "campaign.recipient_link_opened": {
      "post": {
        "operationId": "onCampaignRecipientLinkOpened",
        "summary": "A campaign recipient's first open of a tracked link",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CampaignRecipientLinkOpenedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "campaign.recipient_failed": {
      "post": {
        "operationId": "onCampaignRecipientFailed",
        "summary": "A campaign recipient failed after its last attempt",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CampaignRecipientFailedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "campaign.recipient_skipped": {
      "post": {
        "operationId": "onCampaignRecipientSkipped",
        "summary": "A campaign recipient was skipped",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CampaignRecipientSkippedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "campaign.throttled": {
      "post": {
        "operationId": "onCampaignThrottled",
        "summary": "Campaign sending was paced",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CampaignThrottledEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "campaign.cap_reached": {
      "post": {
        "operationId": "onCampaignCapReached",
        "summary": "A sending number reached its hourly or daily cap",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CampaignCapReachedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    },
    "campaign.cold_blocked": {
      "post": {
        "operationId": "onCampaignColdBlocked",
        "summary": "A campaign recipient was held because they never wrote first",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/messaging__CampaignColdBlockedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge receipt. Non-2xx responses are retried according to the retry policy."
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "messaging__WhatsAppMessageIds": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "linked_devices": {
                "type": "string",
                "minLength": 1,
                "maxLength": 512,
                "description": "Specifies linked devices for this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `512` characters |"
              },
              "official_api": {
                "type": "string",
                "minLength": 1,
                "maxLength": 512,
                "description": "Specifies official api for this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `512` characters |"
              }
            },
            "required": [
              "linked_devices"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "linked_devices": {
                "type": "string",
                "minLength": 1,
                "maxLength": 512,
                "description": "Specifies linked devices for this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `512` characters |"
              },
              "official_api": {
                "type": "string",
                "minLength": 1,
                "maxLength": 512,
                "description": "Specifies official api for this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `512` characters |"
              }
            },
            "required": [
              "official_api"
            ],
            "additionalProperties": false
          }
        ],
        "description": "Exact message references observed through Linked Devices, the Official API, or both. Use the Polymorfa message id for actions and replies. Unknown provider references are omitted."
      },
      "messaging__IdentityRef": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "phoneNumber": {
            "type": "string",
            "description": "Phone number in international format."
          },
          "bsuid": {
            "type": "string",
            "description": "Business-scoped user identifier (BSUID), scoped to the owning business portfolio."
          },
          "username": {
            "type": "string",
            "description": "WhatsApp username when one is available."
          },
          "parentBsuid": {
            "type": "string",
            "description": "Parent business-scoped user ID (`CC.ENT.…`), present only when WhatsApp reports one for this person. It identifies the person across the business portfolios enrolled in one parent account. It cannot be used to send messages or block people; use `id` or `bsuid`.",
            "example": "US.ENT.11815799212886844830"
          }
        },
        "required": [
          "id"
        ]
      },
      "messaging__ConversationRef": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "phoneNumber": {
            "type": "string",
            "description": "Phone number in international format."
          },
          "bsuid": {
            "type": "string",
            "description": "Business-scoped user identifier (BSUID), scoped to the owning business portfolio."
          },
          "username": {
            "type": "string",
            "description": "WhatsApp username when one is available."
          },
          "parentBsuid": {
            "type": "string",
            "description": "Parent business-scoped user ID (`CC.ENT.…`), present only when WhatsApp reports one for this person. It identifies the person across the business portfolios enrolled in one parent account. It cannot be used to send messages or block people; use `id` or `bsuid`.",
            "example": "US.ENT.11815799212886844830"
          },
          "sender": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__IdentityRef"
              }
            ],
            "description": "Stable identifier for the user who sent the message or event."
          }
        },
        "required": [
          "id"
        ]
      },
      "messaging__PollOption": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Human-readable name for this resource."
          },
          "hash": {
            "type": "string",
            "description": "Specifies hash for this messaging poll option."
          }
        },
        "required": [
          "name",
          "hash"
        ]
      },
      "messaging__MediaThumbnail": {
        "type": "object",
        "properties": {
          "contentType": {
            "type": "string",
            "enum": [
              "image/jpeg"
            ],
            "description": "IANA media type that matches the payload.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `image/jpeg` | Image/jpeg. |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Media type | IANA `type/subtype` value matching the payload, such as `image/jpeg`, `image/png`, or `image/webp` |"
          },
          "data": {
            "type": "string",
            "description": "Base64-encoded JPEG bytes, at most 16 KiB decoded."
          },
          "width": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "description": "Width in pixels.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | Greater than `0` |"
          },
          "height": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "description": "Height in pixels.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | Greater than `0` |"
          }
        },
        "required": [
          "contentType",
          "data"
        ],
        "description": "Low-resolution JPEG preview embedded in the message. Present only when the sender embedded one of at most 16 KiB; previews WhatsApp stores separately are not fetched."
      },
      "messaging__LinkPreview": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The URL the preview describes, as matched in the message text."
          },
          "title": {
            "type": "string",
            "description": "Human-readable title shown to the recipient or operator."
          },
          "description": {
            "type": "string",
            "description": "Human-readable description of this resource."
          },
          "previewType": {
            "type": "string",
            "description": "WhatsApp's preview kind in lower case, such as `none`, `video` or `image`."
          },
          "thumbnail": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__MediaThumbnail"
              }
            ],
            "description": "Specifies thumbnail for this messaging link preview."
          }
        },
        "required": [
          "url"
        ],
        "description": "Preview the sender attached to a text message containing a URL."
      },
      "messaging__MessageAssociation": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "hd_image",
              "hd_video"
            ],
            "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `hd_image` | Hd image. |\n| `hd_video` | Hd video. |"
          },
          "parentMessageId": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "`id` of the standard-quality message this HD message belongs to. It can arrive before that message.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          }
        },
        "required": [
          "type",
          "parentMessageId"
        ],
        "description": "Present on the HD half of an HD media pair. Show it in place of the standard message it names."
      },
      "messaging__MessagePayload": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "whatsapp_ids": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__WhatsAppMessageIds"
              }
            ],
            "description": "Exact observed provider references under linked_devices, official_api, or both. Use the Polymorfa id for message actions.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `linked_devices` |\n| Alternative 2 | Type: `object`; Required fields: `official_api` |"
          },
          "whatsapp_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "Temporary singular provider reference for older consumers. Use whatsapp_ids for transport-specific references.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `512` characters |",
            "deprecated": true
          },
          "conversation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ConversationRef"
              }
            ],
            "description": "Public conversation identifier or E.164 phone number."
          },
          "fromMe": {
            "type": "boolean",
            "description": "Whether the connected account originated the message."
          },
          "timestamp": {
            "type": "number",
            "description": "Unix timestamp in seconds associated with this event."
          },
          "pushName": {
            "type": "string",
            "description": "WhatsApp display name reported by the sender's client."
          },
          "isGroup": {
            "type": "boolean",
            "description": "Whether the conversation is a group chat."
          },
          "type": {
            "type": "string",
            "enum": [
              "text",
              "image",
              "video",
              "audio",
              "document",
              "location",
              "contact",
              "phone_number_shared",
              "native_flow_response",
              "button_reply",
              "list_reply",
              "poll",
              "sticker",
              "reaction",
              "revoke",
              "edited",
              "unknown"
            ],
            "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `text` | Text. |\n| `image` | Image. |\n| `video` | Video. |\n| `audio` | Audio. |\n| `document` | Document. |\n| `location` | Location. |\n| `contact` | Contact. |\n| `phone_number_shared` | Phone number shared. |\n| `native_flow_response` | Native flow response. |\n| `button_reply` | Button reply. |\n| `list_reply` | List reply. |\n| `poll` | Poll. |\n| `sticker` | Sticker. |\n| `reaction` | Reaction. |\n| `revoke` | Revoke. |\n| `edited` | Edited. |\n| `unknown` | Unknown. |"
          },
          "text": {
            "type": "string",
            "description": "Text content carried by this object."
          },
          "caption": {
            "type": "string",
            "description": "Caption shown with the attached media."
          },
          "mimeType": {
            "type": "string",
            "description": "IANA media type that matches the media payload.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Media type | IANA `type/subtype` value matching the payload, such as `image/jpeg`, `video/mp4`, `audio/ogg`, or `application/pdf` |"
          },
          "ptt": {
            "type": "boolean",
            "description": "Whether the audio is presented as a push-to-talk voice message."
          },
          "filename": {
            "type": "string",
            "description": "Filename presented for the media attachment."
          },
          "latitude": {
            "type": "number",
            "description": "Latitude in decimal degrees."
          },
          "longitude": {
            "type": "number",
            "description": "Longitude in decimal degrees."
          },
          "displayName": {
            "type": "string",
            "description": "Human-readable display name."
          },
          "title": {
            "type": "string",
            "description": "Human-readable title shown to the recipient or operator."
          },
          "reaction": {
            "type": "string",
            "description": "Reaction applied to the referenced message."
          },
          "reactionTo": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "revokedId": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "nativeFlowResponse": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 64,
                "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |"
              },
              "paramsJson": {
                "type": "string",
                "minLength": 1,
                "maxLength": 262144,
                "description": "JSON object encoded as a string and returned by the native Flow interaction.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `262144` characters |"
              },
              "version": {
                "type": "integer",
                "minimum": 0,
                "description": "Specifies version for this native flow response.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              }
            },
            "required": [
              "name",
              "paramsJson"
            ],
            "description": "Structured response returned by a native Flow interaction."
          },
          "replyChoice": {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "button",
                  "list"
                ],
                "description": "Reply control the contact used: a reply or quick-reply button, or a list row.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `button` | Button. |\n| `list` | List. |"
              },
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 256,
                "description": "ID you assigned to the selected button or list row. It is never the visible label, except for a template quick-reply button sent without a payload, where WhatsApp returns the button text.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
              }
            },
            "required": [
              "kind",
              "id"
            ],
            "description": "Present when the contact selects a reply button or list row."
          },
          "parentMessageId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "WhatsApp ID of the message this one quotes, when WhatsApp supplies one. It is not necessarily a message you sent.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          },
          "media": {
            "type": "string",
            "description": "Reference to the media attached to this message."
          },
          "mediaUrl": {
            "type": "string",
            "description": "URL used to retrieve the attached media."
          },
          "edited": {
            "type": "boolean",
            "description": "Whether the event represents an edited message."
          },
          "pollOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__PollOption"
            },
            "description": "Options recipients can choose in the poll."
          },
          "unavailable": {
            "type": "boolean",
            "description": "Whether the content is unavailable."
          },
          "unavailableReason": {
            "type": "string",
            "description": "Reason the content is unavailable."
          },
          "width": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "description": "Image, video or sticker width in pixels, as declared by the sender.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | Greater than `0` |"
          },
          "height": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "description": "Image, video or sticker height in pixels, as declared by the sender.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | Greater than `0` |"
          },
          "seconds": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "description": "Audio or video duration in seconds.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | Greater than `0` |"
          },
          "waveform": {
            "type": "array",
            "items": {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            },
            "maxItems": 64,
            "description": "Voice-note waveform: up to 64 samples from 0 to 1.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `64` items |\n| Item numeric value | `0` through `1` (inclusive) |"
          },
          "pageCount": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "description": "Document page count, as declared by the sender.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | Greater than `0` |"
          },
          "thumbnail": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__MediaThumbnail"
              }
            ],
            "description": "Specifies thumbnail for this messaging message payload."
          },
          "linkPreview": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__LinkPreview"
              }
            ],
            "description": "Specifies link preview for this messaging message payload."
          },
          "association": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__MessageAssociation"
              }
            ],
            "description": "Specifies association for this messaging message payload."
          },
          "quality": {
            "type": "string",
            "enum": [
              "standard",
              "hd"
            ],
            "description": "`hd` on the HD half of a pair; `standard` on a standard message that announced an HD half.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `standard` | Standard. |\n| `hd` | Hd. |"
          }
        },
        "required": [
          "id",
          "whatsapp_ids",
          "conversation",
          "fromMe",
          "timestamp",
          "pushName",
          "isGroup",
          "type"
        ]
      },
      "messaging__CloudOrderItem": {
        "type": "object",
        "properties": {
          "productRetailerId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "Your retailer ID (SKU), at most 256 UTF-8 bytes with no control characters.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
          },
          "quantity": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "description": "Units ordered.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | Greater than `0` |"
          },
          "itemPrice": {
            "type": "number",
            "minimum": 0,
            "description": "Unit price as Meta reported it. Polymorfa does not convert or recompute it.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "currency": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "description": "ISO 4217 currency code Meta reported for the item.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Z]{3}$` |"
          }
        },
        "required": [
          "productRetailerId",
          "quantity",
          "itemPrice",
          "currency"
        ]
      },
      "messaging__CloudOrder": {
        "type": "object",
        "properties": {
          "catalogId": {
            "type": "string",
            "pattern": "^[0-9]{1,32}$",
            "description": "Meta catalog ID the cart was built from.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[0-9]{1,32}$` |"
          },
          "text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4096,
            "description": "Text the contact sent with the order.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `4096` characters |"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__CloudOrderItem"
            },
            "minItems": 1,
            "maxItems": 1000,
            "description": "Items associated with this messaging cloud order.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `1000` items |"
          }
        },
        "required": [
          "catalogId",
          "items"
        ],
        "description": "Present on `type: \"order\"` messages when every cart line is readable. There is no order total: multiply `quantity` by `itemPrice` per item if you need one. Prices and availability can differ from your catalog; confirm them before you fulfil the order."
      },
      "messaging__CloudMessagePayload": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "whatsapp_ids": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__WhatsAppMessageIds"
              }
            ],
            "description": "Exact observed provider references under linked_devices, official_api, or both. Use the Polymorfa id for message actions.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `linked_devices` |\n| Alternative 2 | Type: `object`; Required fields: `official_api` |"
          },
          "whatsapp_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "Temporary singular provider reference for older consumers. Use whatsapp_ids for transport-specific references.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `512` characters |",
            "deprecated": true
          },
          "conversation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ConversationRef"
              }
            ],
            "description": "Public conversation identifier or E.164 phone number."
          },
          "timestamp": {
            "type": "string",
            "description": "Unix timestamp in seconds represented as a decimal string."
          },
          "type": {
            "type": "string",
            "description": "Type discriminator for this object."
          },
          "senderName": {
            "type": "string",
            "description": "Human-readable sender name for this messaging cloud message payload."
          },
          "nativeFlowResponse": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 64,
                "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |"
              },
              "paramsJson": {
                "type": "string",
                "minLength": 1,
                "maxLength": 262144,
                "description": "JSON object encoded as a string and returned by the native Flow interaction.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `262144` characters |"
              },
              "version": {
                "type": "integer",
                "minimum": 0,
                "description": "Specifies version for this native flow response.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              }
            },
            "required": [
              "name",
              "paramsJson"
            ],
            "description": "Structured response returned by a native Flow interaction."
          },
          "replyChoice": {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "button",
                  "list"
                ],
                "description": "Reply control the contact used: a reply or quick-reply button, or a list row.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `button` | Button. |\n| `list` | List. |"
              },
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 256,
                "description": "ID you assigned to the selected button or list row. It is never the visible label, except for a template quick-reply button sent without a payload, where WhatsApp returns the button text.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
              }
            },
            "required": [
              "kind",
              "id"
            ],
            "description": "Present when the contact selects a reply button or list row."
          },
          "parentMessageId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "WhatsApp ID of the message this one quotes, when WhatsApp supplies one. It is not necessarily a message you sent.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          },
          "interactive": {
            "type": "object",
            "additionalProperties": {},
            "description": "Structured interactive values for this messaging cloud message payload."
          },
          "order": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CloudOrder"
              }
            ],
            "description": "Specifies order for this messaging cloud message payload."
          },
          "referral": {
            "type": "object",
            "properties": {
              "source_type": {
                "type": "string",
                "description": "Category assigned to source."
              },
              "source_id": {
                "type": "string",
                "description": "Identifier for the source."
              },
              "source_url": {
                "type": "string",
                "description": "URL for the source."
              },
              "ctwa_clid": {
                "type": "string",
                "description": "Identifier for the ctwa cl."
              }
            },
            "description": "Meta-supplied Click-to-WhatsApp entry point. Does not establish a conversion or payment."
          }
        },
        "required": [
          "id",
          "whatsapp_ids",
          "conversation",
          "timestamp",
          "type"
        ]
      },
      "messaging__MessageReceivedPayload": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/messaging__MessagePayload"
          },
          {
            "$ref": "#/components/schemas/messaging__CloudMessagePayload"
          }
        ]
      },
      "messaging__MessageReceivedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "message.received"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `message.received` | Message.received. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__MessageReceivedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `type`: `text` or `image` or `video` or `audio` or `document` or `location` or `contact` or `phone_number_shared` or `native_flow_response` or `button_reply` or `list_reply` or `poll` or `sticker` or `reaction` or `revoke` or `edited` or `unknown`; Field `quality`: `standard` or `hd`; Required fields: `id`, `whatsapp_ids`, `conversation`, `fromMe`, `timestamp`, `pushName`, `isGroup`, `type` |\n| Alternative 2 | Type: `object`; Required fields: `id`, `whatsapp_ids`, `conversation`, `timestamp`, `type` |"
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__MessageSentPayload": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "whatsapp_ids": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__WhatsAppMessageIds"
              }
            ],
            "description": "Exact observed provider references under linked_devices, official_api, or both. Use the Polymorfa id for message actions.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `linked_devices` |\n| Alternative 2 | Type: `object`; Required fields: `official_api` |"
          },
          "whatsapp_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "Temporary singular provider reference for older consumers. Use whatsapp_ids for transport-specific references.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `512` characters |",
            "deprecated": true
          },
          "conversation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ConversationRef"
              }
            ],
            "description": "Public conversation identifier or E.164 phone number."
          },
          "type": {
            "type": "string",
            "description": "Type discriminator for this object."
          },
          "timestamp": {
            "type": "number",
            "description": "Unix timestamp in seconds associated with this event."
          },
          "width": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "description": "Image, video or sticker width in pixels, as declared by the sender.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | Greater than `0` |"
          },
          "height": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "description": "Image, video or sticker height in pixels, as declared by the sender.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | Greater than `0` |"
          },
          "seconds": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "description": "Audio or video duration in seconds.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | Greater than `0` |"
          },
          "waveform": {
            "type": "array",
            "items": {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            },
            "maxItems": 64,
            "description": "Voice-note waveform: up to 64 samples from 0 to 1.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `64` items |\n| Item numeric value | `0` through `1` (inclusive) |"
          },
          "pageCount": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "description": "Document page count, as declared by the sender.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | Greater than `0` |"
          },
          "thumbnail": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__MediaThumbnail"
              }
            ],
            "description": "Specifies thumbnail for this messaging message sent payload."
          },
          "linkPreview": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__LinkPreview"
              }
            ],
            "description": "Specifies link preview for this messaging message sent payload."
          },
          "association": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__MessageAssociation"
              }
            ],
            "description": "Specifies association for this messaging message sent payload."
          },
          "quality": {
            "type": "string",
            "enum": [
              "standard",
              "hd"
            ],
            "description": "`hd` on the HD half of a pair; `standard` on a standard message that announced an HD half.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `standard` | Standard. |\n| `hd` | Hd. |"
          }
        },
        "required": [
          "id",
          "whatsapp_ids",
          "conversation",
          "type",
          "timestamp"
        ]
      },
      "messaging__MessageSentEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "message.sent"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `message.sent` | Message.sent. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__MessageSentPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__MetaPricingReport": {
        "type": "object",
        "properties": {
          "billable": {
            "type": "boolean",
            "description": "Whether WhatsApp reported the message as billable. WhatsApp is deprecating this field; use `type`."
          },
          "pricing_model": {
            "type": "string",
            "description": "WhatsApp pricing model, for example `PMP` (per-message pricing).",
            "example": "PMP"
          },
          "category": {
            "type": "string",
            "description": "WhatsApp pricing category, for example `marketing`, `utility`, `authentication` or `service`.",
            "example": "utility"
          },
          "type": {
            "type": "string",
            "description": "WhatsApp pricing type, for example `regular`, `free_customer_service` or `free_entry_point`.",
            "example": "free_customer_service"
          }
        },
        "description": "Official API only. The pricing classification WhatsApp reported for this message, copied as reported. Meta bills your WhatsApp Business Account directly; this is not a Polymorfa charge and contains no price."
      },
      "messaging__MessageAckPayload": {
        "type": "object",
        "properties": {
          "messages": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "pattern": "^[1-9][0-9]{0,18}$",
                  "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
                  "example": "739182640518203"
                },
                "whatsapp_ids": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/messaging__WhatsAppMessageIds"
                    }
                  ],
                  "description": "Exact observed provider references under linked_devices, official_api, or both. Use the Polymorfa id for message actions.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `linked_devices` |\n| Alternative 2 | Type: `object`; Required fields: `official_api` |"
                },
                "whatsapp_id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 512,
                  "description": "Temporary singular provider reference for older consumers. Use whatsapp_ids for transport-specific references.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `512` characters |",
                  "deprecated": true
                }
              },
              "required": [
                "id",
                "whatsapp_ids"
              ]
            },
            "description": "Messages associated with this messaging message ack payload."
          },
          "conversation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ConversationRef"
              }
            ],
            "description": "Public conversation identifier or E.164 phone number."
          },
          "from": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__IdentityRef"
              }
            ],
            "description": "Stable identifier for the conversation or account that originated the event."
          },
          "sender": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__IdentityRef"
              }
            ],
            "description": "Stable identifier for the user who sent the message or event."
          },
          "type": {
            "type": "string",
            "description": "Ack type: error, delivered, read, played"
          },
          "timestamp": {
            "type": "number",
            "description": "Unix timestamp in seconds associated with this event."
          },
          "pricing": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__MetaPricingReport"
              }
            ],
            "description": "Specifies pricing for this messaging message ack payload."
          }
        },
        "required": [
          "messages",
          "conversation",
          "type",
          "timestamp"
        ]
      },
      "messaging__MessageAckEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "message.ack"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `message.ack` | Message.ack. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__MessageAckPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__MessageRevokedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "message.revoked"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `message.revoked` | Message.revoked. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__MessagePayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__MessageReactionEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "message.reaction"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `message.reaction` | Message.reaction. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__MessageReceivedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `type`: `text` or `image` or `video` or `audio` or `document` or `location` or `contact` or `phone_number_shared` or `native_flow_response` or `button_reply` or `list_reply` or `poll` or `sticker` or `reaction` or `revoke` or `edited` or `unknown`; Field `quality`: `standard` or `hd`; Required fields: `id`, `whatsapp_ids`, `conversation`, `fromMe`, `timestamp`, `pushName`, `isGroup`, `type` |\n| Alternative 2 | Type: `object`; Required fields: `id`, `whatsapp_ids`, `conversation`, `timestamp`, `type` |"
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__MessageEditedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "message.edited"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `message.edited` | Message.edited. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__MessagePayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__MessageUpdateEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "message.update"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `message.update` | Message.update. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__MessagePayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__MessageDeletePayload": {
        "type": "object",
        "properties": {
          "from": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__IdentityRef"
              }
            ],
            "description": "Stable identifier for the conversation or account that originated the event."
          },
          "sender": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__IdentityRef"
              }
            ],
            "description": "Stable identifier for the user who sent the message or event."
          },
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "whatsapp_ids": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__WhatsAppMessageIds"
              }
            ],
            "description": "Exact observed provider references under linked_devices, official_api, or both. Use the Polymorfa id for message actions.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `linked_devices` |\n| Alternative 2 | Type: `object`; Required fields: `official_api` |"
          },
          "whatsapp_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "Temporary singular provider reference for older consumers. Use whatsapp_ids for transport-specific references.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `512` characters |",
            "deprecated": true
          },
          "conversation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ConversationRef"
              }
            ],
            "description": "Public conversation identifier or E.164 phone number."
          },
          "fromMe": {
            "type": "boolean",
            "description": "Whether the connected account originated the message."
          }
        },
        "required": [
          "from",
          "sender",
          "id",
          "whatsapp_ids",
          "conversation",
          "fromMe"
        ]
      },
      "messaging__MessageDeleteEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "message.delete"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `message.delete` | Message.delete. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__MessageDeletePayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__PollVotePayload": {
        "type": "object",
        "properties": {
          "pollMessageId": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "conversation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ConversationRef"
              }
            ],
            "description": "Public conversation identifier or E.164 phone number."
          },
          "voter": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__IdentityRef"
              }
            ],
            "description": "Specifies voter for this messaging poll vote payload."
          },
          "selectedHashes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Selected hashes associated with this messaging poll vote payload."
          },
          "timestamp": {
            "type": "number",
            "description": "Unix timestamp in seconds associated with this event."
          }
        },
        "required": [
          "pollMessageId",
          "conversation",
          "voter",
          "selectedHashes",
          "timestamp"
        ]
      },
      "messaging__MessageVoteEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "message.vote"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `message.vote` | Message.vote. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__PollVotePayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__RuntimeSessionStatusPayload": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "Session status: CONNECTING, CONNECTED, DISCONNECTED",
            "example": "DISCONNECTED"
          },
          "statusReason": {
            "type": "string",
            "description": "Reason for the status: SCAN_QR, AUTO_RECONNECT, FAILED, MANUAL_STOP, QR_TIMEOUT, LOGGED_OUT, TEMPORARY_BAN, STREAM_ERROR",
            "example": "TEMPORARY_BAN"
          },
          "banCode": {
            "type": "integer",
            "minimum": 0,
            "description": "WhatsApp temporary-ban code (present only when statusReason is TEMPORARY_BAN).\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |",
            "example": 101
          },
          "banReason": {
            "type": "string",
            "description": "Human-readable label for the ban code (present only when statusReason is TEMPORARY_BAN).",
            "example": "Suspected spam activity"
          },
          "banExpiresAt": {
            "type": "integer",
            "description": "Unix timestamp in seconds when the temporary ban lifts, when WhatsApp provides a duration.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |",
            "format": "int64",
            "example": 1789000000
          },
          "detail": {
            "type": "string",
            "description": "Extra context for FAILED and STREAM_ERROR statuses (for example the connect-failure reason)."
          }
        },
        "required": [
          "status"
        ]
      },
      "messaging__CloudAccountStatusPayload": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "meta"
            ],
            "description": "Always `meta`: a WhatsApp Business Account notification, not a connection-state change\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `meta` | Meta. |"
          },
          "kind": {
            "type": "string",
            "enum": [
              "account_alerts",
              "account_update",
              "phone_number_name_update"
            ],
            "description": "WhatsApp notification field that produced the event\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `account_alerts` | Account alerts. |\n| `account_update` | Account update. |\n| `phone_number_name_update` | Phone number name update. |"
          },
          "wabaId": {
            "type": "string",
            "description": "WhatsApp Business Account id the notification belongs to",
            "example": "102290129340398"
          },
          "value": {
            "type": "object",
            "additionalProperties": {},
            "description": "The notification's `value` object exactly as WhatsApp sent it; its fields vary by notification"
          }
        },
        "required": [
          "source",
          "kind",
          "value"
        ]
      },
      "messaging__SessionStatusPayload": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/messaging__RuntimeSessionStatusPayload"
          },
          {
            "$ref": "#/components/schemas/messaging__CloudAccountStatusPayload"
          }
        ]
      },
      "messaging__SessionStatusEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "session.status"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `session.status` | Session.status. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__SessionStatusPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `status` |\n| Alternative 2 | Type: `object`; Field `source`: `meta`; Field `kind`: `account_alerts` or `account_update` or `phone_number_name_update`; Required fields: `source`, `kind`, `value` |"
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__SessionConnectedPayload": {
        "type": "object",
        "properties": {
          "phoneNumber": {
            "type": "string",
            "description": "Phone number in international format."
          },
          "id": {
            "type": "string",
            "description": "Polymorfa ID of the connected account."
          },
          "pushName": {
            "type": "string",
            "description": "WhatsApp display name reported by the sender's client."
          },
          "phonePlatform": {
            "type": "string",
            "enum": [
              "android",
              "ios",
              "meta_cloud",
              "unknown"
            ],
            "description": "Where the account's primary WhatsApp client runs.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `android` | WhatsApp or WhatsApp Business on an Android phone. |\n| `ios` | WhatsApp or WhatsApp Business on an iPhone. |\n| `meta_cloud` | Meta hosts the number through Cloud API. |\n| `unknown` | The phone has not reported a recognized platform. |"
          },
          "accountType": {
            "type": "string",
            "enum": [
              "whatsapp_app",
              "business_app",
              "meta_cloud",
              "meta_coexistence"
            ],
            "description": "How the account uses WhatsApp.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `whatsapp_app` | WhatsApp app, connected as a linked device. |\n| `business_app` | WhatsApp Business app, connected as a linked device. |\n| `meta_cloud` | Meta Cloud API. |\n| `meta_coexistence` | Meta Cloud API, with the WhatsApp Business app still active on the phone. |"
          },
          "businessName": {
            "type": "string",
            "description": "Business name shown to the customer."
          }
        },
        "required": [
          "phoneNumber",
          "pushName",
          "phonePlatform",
          "accountType"
        ]
      },
      "messaging__SessionConnectedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "session.connected"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `session.connected` | Session.connected. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__SessionConnectedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__SessionLoggedOutPayload": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "enum": [
              "banned",
              "device_removed",
              "unknown"
            ],
            "description": "Why the session was logged out: `banned` when WhatsApp banned the account, `device_removed` when the linked device was removed from the phone or from another device, `unknown` otherwise (including a locked account).\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `banned` | Banned. |\n| `device_removed` | Device removed. |\n| `unknown` | Unknown. |",
            "example": "device_removed"
          },
          "code": {
            "type": "integer",
            "description": "WhatsApp's logout code: 401 (removed), 403 (locked) or 406 (banned); 0 when WhatsApp gave none.",
            "example": 401
          }
        },
        "required": [
          "reason",
          "code"
        ]
      },
      "messaging__SessionLoggedOutEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "session.logged_out"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `session.logged_out` | Session.logged out. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__SessionLoggedOutPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__SessionPhoneOfflinePayload": {
        "type": "object",
        "properties": {
          "daysSinceLastSeen": {
            "type": "number",
            "description": "Whole days since the phone was last seen online.",
            "example": 11
          },
          "daysRemaining": {
            "type": "number",
            "description": "Days remaining before WhatsApp disconnects the session (clamped to 0). WhatsApp typically severs the companion link after ~14 days of phone inactivity.",
            "example": 3
          },
          "lastSeen": {
            "type": "string",
            "description": "ISO 8601 timestamp of the last time the phone was seen online.",
            "example": "2026-04-05T14:30:00Z"
          },
          "action": {
            "type": "string",
            "description": "Human-readable action string to surface to the end user (e.g. ask them to open WhatsApp on their phone).",
            "example": "Open WhatsApp on your phone to keep the session alive"
          }
        },
        "required": [
          "daysSinceLastSeen",
          "daysRemaining",
          "lastSeen",
          "action"
        ],
        "description": "Sent once a day while the phone is offline, starting on the webhook's phoneOfflineStartDay (7-13, default 10). WhatsApp signs the linked device out after 14 days without its phone. Warnings stop once the phone is seen again."
      },
      "messaging__SessionPhoneOfflineEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "session.phone_offline"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `session.phone_offline` | Session.phone offline. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__SessionPhoneOfflinePayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__SessionCapabilitiesUpdatedPayload": {
        "type": "object",
        "properties": {
          "session": {
            "type": "string",
            "maxLength": 256,
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "status": {
            "type": "string",
            "enum": [
              "synced",
              "unknown"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `synced` | Synced. |\n| `unknown` | Unknown. |"
          },
          "syncedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for synced at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "checkedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for checked at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "accountType": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "business",
              "personal",
              null
            ],
            "description": "Category assigned to account.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `business` | Business. |\n| `personal` | Personal. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `business` or `personal` |\n| Alternative 2 | `null` |"
          },
          "capabilities": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string",
                  "maxLength": 128,
                  "description": "Specifies key for this capability.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `128` characters |"
                },
                "kind": {
                  "type": "string",
                  "enum": [
                    "feature",
                    "limit"
                  ],
                  "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `feature` | Feature. |\n| `limit` | Limit. |"
                },
                "unit": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "enum": [
                    "seconds",
                    "count",
                    "characters",
                    "members",
                    null
                  ],
                  "description": "Specifies unit for this capability.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `seconds` | Seconds. |\n| `count` | Count. |\n| `characters` | Characters. |\n| `members` | Members. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `seconds` or `count` or `characters` or `members` |\n| Alternative 2 | `null` |"
                },
                "value": {
                  "anyOf": [
                    {
                      "anyOf": [
                        {
                          "type": [
                            "boolean",
                            "null"
                          ]
                        },
                        {
                          "type": [
                            "integer",
                            "null"
                          ]
                        }
                      ]
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Value assigned to this field.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Any JSON value matching this alternative |\n| Alternative 2 | `null` |"
                },
                "source": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "enum": [
                    "server",
                    "client_default",
                    "account_type",
                    null
                  ],
                  "description": "Specifies source for this capability.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `server` | Server. |\n| `client_default` | Client default. |\n| `account_type` | Account type. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `server` or `client_default` or `account_type` |\n| Alternative 2 | `null` |"
                }
              },
              "required": [
                "key",
                "kind",
                "unit",
                "value",
                "source"
              ],
              "additionalProperties": false
            },
            "maxItems": 100,
            "description": "Capabilities associated with this messaging session capabilities updated payload.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `100` items |"
          },
          "changedKeys": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 128
            },
            "maxItems": 100,
            "description": "Changed keys associated with this messaging session capabilities updated payload.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `100` items |\n| Item string length | At most `128` characters |"
          }
        },
        "required": [
          "session",
          "projectId",
          "status",
          "syncedAt",
          "checkedAt",
          "accountType",
          "capabilities",
          "changedKeys"
        ],
        "additionalProperties": false
      },
      "messaging__SessionCapabilitiesUpdatedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "session.capabilities_updated"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `session.capabilities_updated` | Session.capabilities updated. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__SessionCapabilitiesUpdatedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__SessionRestrictionUpdatedPayload": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "reachout_timelock"
            ],
            "description": "The restriction. `reachout_timelock`: the number can only message or call people it has already chatted with.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `reachout_timelock` | Reachout timelock. |",
            "example": "reachout_timelock"
          },
          "active": {
            "type": "boolean",
            "description": "True while the restriction applies.",
            "example": true
          },
          "enforcementType": {
            "type": [
              "string",
              "null"
            ],
            "description": "WhatsApp's category for the restriction; null when inactive or not reported.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |",
            "example": "DEFAULT"
          },
          "expiresAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "When the restriction ends (ISO 8601); null when inactive or WhatsApp gave no end.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |",
            "example": "2026-09-20T08:00:00Z"
          },
          "observedAt": {
            "type": "string",
            "description": "When the state was observed (ISO 8601).",
            "example": "2026-09-19T08:00:00Z"
          }
        },
        "required": [
          "type",
          "active",
          "enforcementType",
          "expiresAt",
          "observedAt"
        ]
      },
      "messaging__SessionRestrictionUpdatedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "session.restriction_updated"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `session.restriction_updated` | Session.restriction updated. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__SessionRestrictionUpdatedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__GroupUpdatePayload": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier for this resource."
          },
          "newSubject": {
            "type": "string",
            "description": "Specifies new subject for this messaging group update payload."
          },
          "newDescription": {
            "type": "string",
            "description": "Specifies new description for this messaging group update payload."
          },
          "action": {
            "type": "string",
            "description": "What changed, for example `joined` when the Number joins a group with an invite link."
          }
        },
        "required": [
          "id"
        ]
      },
      "messaging__GroupUpdateEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "group.update"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `group.update` | Group.update. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__GroupUpdatePayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__GroupParticipantPayload": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier for this resource."
          },
          "joined": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__IdentityRef"
            },
            "description": "Joined associated with this messaging group participant payload."
          },
          "left": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__IdentityRef"
            },
            "description": "Left associated with this messaging group participant payload."
          },
          "promoted": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__IdentityRef"
            },
            "description": "Promoted associated with this messaging group participant payload."
          },
          "demoted": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__IdentityRef"
            },
            "description": "Demoted associated with this messaging group participant payload."
          }
        },
        "required": [
          "id"
        ]
      },
      "messaging__GroupParticipantEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "group.participant"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `group.participant` | Group.participant. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__GroupParticipantPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__PresenceUpdatePayload": {
        "type": "object",
        "properties": {
          "observedAt": {
            "type": "integer",
            "description": "Unix timestamp in seconds when Polymorfa observed this state."
          },
          "from": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__IdentityRef"
              }
            ],
            "description": "Stable identifier for the conversation or account that originated the event."
          },
          "sender": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__IdentityRef"
              }
            ],
            "description": "Stable identifier for the user who sent the message or event."
          },
          "state": {
            "type": "string",
            "description": "Composing activity observed for the contact, such as composing or paused."
          },
          "media": {
            "type": "string",
            "description": "Chat presence media category reported while composing or recording, such as audio."
          },
          "unavailable": {
            "type": "boolean",
            "description": "Whether the observed contact is unavailable according to this presence update."
          },
          "lastSeen": {
            "type": "number",
            "description": "Unix timestamp in seconds when the user was last seen."
          }
        },
        "required": [
          "observedAt"
        ]
      },
      "messaging__PresenceUpdateEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "presence.update"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `presence.update` | Presence.update. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__PresenceUpdatePayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__ContactPreviousIdentity": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "bsuid": {
            "type": "string",
            "description": "Business-scoped user identifier (BSUID), scoped to the owning business portfolio."
          },
          "parentBsuid": {
            "type": "string",
            "description": "Identifier for the parent bsu."
          }
        },
        "description": "The identity the person had before the change. `id` is the contact key of that earlier identity."
      },
      "messaging__ContactIdentityChange": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "enum": [
              "phone_number_changed",
              "user_id_changed"
            ],
            "description": "`phone_number_changed`: the person changed their phone number, which also gives them a new business-scoped user ID. `user_id_changed`: their business-scoped user ID changed and WhatsApp did not share a phone number.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `phone_number_changed` | Phone number changed. |\n| `user_id_changed` | User id changed. |"
          },
          "messageId": {
            "type": "string",
            "description": "WhatsApp's ID for the notification that reported the change."
          },
          "previous": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ContactPreviousIdentity"
              }
            ],
            "description": "Specifies previous for this messaging contact identity change."
          }
        },
        "required": [
          "reason",
          "messageId"
        ],
        "description": "Present when WhatsApp reported that the person's identifiers changed. The event's own identity fields describe the new identity."
      },
      "messaging__ContactUpdatePayload": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "bsuid": {
            "type": "string",
            "description": "Business-scoped user identifier (BSUID), scoped to the owning business portfolio."
          },
          "phoneNumber": {
            "type": "string",
            "description": "Phone number in international format."
          },
          "username": {
            "type": "string",
            "description": "WhatsApp username when one is available."
          },
          "parentBsuid": {
            "type": "string",
            "description": "Parent business-scoped user ID (`CC.ENT.…`), present only when WhatsApp reports one for this person. It identifies the person across the business portfolios enrolled in one parent account. It cannot be used to send messages or block people; use `id` or `bsuid`.",
            "example": "US.ENT.11815799212886844830"
          },
          "identityChange": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ContactIdentityChange"
              }
            ],
            "description": "Specifies identity change for this messaging contact update payload."
          },
          "fullName": {
            "type": "string",
            "description": "Human-readable full name for this messaging contact update payload."
          },
          "firstName": {
            "type": "string",
            "description": "Human-readable first name for this messaging contact update payload."
          },
          "pushName": {
            "type": "string",
            "description": "WhatsApp display name reported by the sender's client."
          },
          "oldPushName": {
            "type": "string",
            "description": "Human-readable old push name for this messaging contact update payload."
          },
          "businessName": {
            "type": "string",
            "description": "Business name shown to the customer."
          },
          "oldBusinessName": {
            "type": "string",
            "description": "Human-readable old business name for this messaging contact update payload."
          },
          "pictureId": {
            "type": "string",
            "description": "Identifier for the picture."
          },
          "pictureRemoved": {
            "type": "boolean",
            "description": "Whether picture removed."
          }
        },
        "required": [
          "id"
        ]
      },
      "messaging__ContactUpdateEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "contact.update"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `contact.update` | Contact.update. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ContactUpdatePayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__ContactOptPayload": {
        "type": "object",
        "properties": {
          "phone": {
            "type": "string",
            "description": "Contact phone number in E.164 format",
            "example": "+14155550123"
          },
          "source": {
            "type": "string",
            "enum": [
              "stop-keyword"
            ],
            "description": "How the suppression list changed. Keyword replies always report `stop-keyword`.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `stop-keyword` | Stop keyword. |"
          },
          "keyword": {
            "type": "string",
            "description": "The configured keyword the reply matched, in upper case. The message itself is never included.",
            "example": "STOP"
          },
          "session": {
            "type": "string",
            "description": "Session name of the number that received the reply",
            "example": "sales-1"
          },
          "projectId": {
            "type": "string",
            "description": "Project that owns the receiving number, when known"
          }
        },
        "required": [
          "phone",
          "source",
          "keyword",
          "session"
        ]
      },
      "messaging__ContactOptedOutEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "contact.opted_out"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `contact.opted_out` | Contact.opted out. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ContactOptPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__ContactOptedInEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "contact.opted_in"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `contact.opted_in` | Contact.opted in. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ContactOptPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__ChatArchivePayload": {
        "type": "object",
        "properties": {
          "from": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__IdentityRef"
              }
            ],
            "description": "Stable identifier for the conversation or account that originated the event."
          },
          "archive": {
            "type": "boolean",
            "description": "Whether archive."
          },
          "pinned": {
            "type": "boolean",
            "description": "Whether pinned."
          }
        },
        "required": [
          "from"
        ]
      },
      "messaging__ChatArchiveEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "chat.archive"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `chat.archive` | Chat.archive. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ChatArchivePayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__ChatMutePayload": {
        "type": "object",
        "properties": {
          "from": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__IdentityRef"
              }
            ],
            "description": "Stable identifier for the conversation or account that originated the event."
          },
          "muted": {
            "type": "boolean",
            "description": "Whether notifications are muted."
          },
          "muteEndTimestamp": {
            "type": "number",
            "description": "Unix timestamp in seconds when the chat mute expires."
          }
        },
        "required": [
          "from",
          "muted"
        ]
      },
      "messaging__ChatMuteEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "chat.mute"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `chat.mute` | Chat.mute. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ChatMutePayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__ChatReadPayload": {
        "type": "object",
        "properties": {
          "from": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__IdentityRef"
              }
            ],
            "description": "Stable identifier for the conversation or account that originated the event."
          },
          "read": {
            "type": "boolean",
            "description": "Whether read."
          }
        },
        "required": [
          "from",
          "read"
        ]
      },
      "messaging__ChatReadEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "chat.read"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `chat.read` | Chat.read. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ChatReadPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__ChatClearPayload": {
        "type": "object",
        "properties": {
          "from": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__IdentityRef"
              }
            ],
            "description": "Stable identifier for the conversation or account that originated the event."
          }
        },
        "required": [
          "from"
        ]
      },
      "messaging__ChatClearEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "chat.clear"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `chat.clear` | Chat.clear. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ChatClearPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__ChatDeletePayload": {
        "type": "object",
        "properties": {
          "from": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__IdentityRef"
              }
            ],
            "description": "Stable identifier for the conversation or account that originated the event."
          }
        },
        "required": [
          "from"
        ]
      },
      "messaging__ChatDeleteEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "chat.delete"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `chat.delete` | Chat.delete. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ChatDeletePayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CallReceivedPayload": {
        "type": "object",
        "properties": {
          "from": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__IdentityRef"
              }
            ],
            "description": "Stable identifier for the conversation or account that originated the event."
          },
          "callId": {
            "type": "string",
            "description": "Identifier of the WhatsApp call."
          },
          "hasVideo": {
            "type": "boolean",
            "description": "Whether the offered call advertised video.",
            "example": false
          },
          "sessionConnection": {
            "type": "string",
            "enum": [
              "linked_device",
              "cloud_api"
            ],
            "description": "Connection of the session that carries the call: a linked device or the WhatsApp Business Cloud API.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `linked_device` | Linked device. |\n| `cloud_api` | Cloud api. |",
            "example": "linked_device"
          },
          "capabilities": {
            "type": "object",
            "properties": {
              "video": {
                "type": "boolean",
                "description": "The call can carry video."
              },
              "invite": {
                "type": "boolean",
                "description": "More participants can be invited into the call."
              }
            },
            "required": [
              "video",
              "invite"
            ],
            "description": "What the call supports."
          }
        },
        "required": [
          "from",
          "callId",
          "hasVideo"
        ]
      },
      "messaging__CallReceivedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "call.received"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `call.received` | Call.received. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CallReceivedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CallMissedPayload": {
        "type": "object",
        "properties": {
          "from": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__IdentityRef"
              }
            ],
            "description": "Stable identifier for the conversation or account that originated the event."
          },
          "callId": {
            "type": "string",
            "description": "Identifier of the WhatsApp call."
          },
          "reason": {
            "type": "string",
            "description": "Reason for the reported state or outcome."
          }
        },
        "required": [
          "from",
          "callId",
          "reason"
        ]
      },
      "messaging__CallMissedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "call.missed"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `call.missed` | Call.missed. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CallMissedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CallAcceptedPayload": {
        "type": "object",
        "properties": {
          "from": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__IdentityRef"
              }
            ],
            "description": "Stable identifier for the conversation or account that originated the event."
          },
          "callId": {
            "type": "string",
            "description": "Identifier of the WhatsApp call."
          },
          "answeredBy": {
            "type": "string",
            "description": "Participant reference that answered or placed the call: `client:<id>` or `server:<id>`.",
            "example": "client:agent-7"
          },
          "exclusive": {
            "type": "boolean",
            "description": "Present and `true` when the answering participant claimed the call."
          },
          "sessionConnection": {
            "type": "string",
            "enum": [
              "linked_device",
              "cloud_api"
            ],
            "description": "Connection of the session that carries the call: a linked device or the WhatsApp Business Cloud API.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `linked_device` | Linked device. |\n| `cloud_api` | Cloud api. |",
            "example": "linked_device"
          },
          "capabilities": {
            "type": "object",
            "properties": {
              "video": {
                "type": "boolean",
                "description": "The call can carry video."
              },
              "invite": {
                "type": "boolean",
                "description": "More participants can be invited into the call."
              }
            },
            "required": [
              "video",
              "invite"
            ],
            "description": "What the call supports."
          }
        },
        "required": [
          "from",
          "callId"
        ]
      },
      "messaging__CallAcceptedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "call.accepted"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `call.accepted` | Call.accepted. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CallAcceptedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CallRejectedPayload": {
        "type": "object",
        "properties": {
          "from": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__IdentityRef"
              }
            ],
            "description": "Stable identifier for the conversation or account that originated the event."
          },
          "callId": {
            "type": "string",
            "description": "Identifier of the WhatsApp call."
          }
        },
        "required": [
          "from",
          "callId"
        ]
      },
      "messaging__CallRejectedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "call.rejected"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `call.rejected` | Call.rejected. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CallRejectedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CallEndedPayload": {
        "type": "object",
        "properties": {
          "from": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "id": {
                "type": "string",
                "pattern": "^[1-9][0-9]{0,18}$",
                "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
                "example": "739182640518203"
              },
              "phoneNumber": {
                "type": "string",
                "description": "Phone number in international format."
              },
              "bsuid": {
                "type": "string",
                "description": "Business-scoped user identifier (BSUID), scoped to the owning business portfolio."
              },
              "username": {
                "type": "string",
                "description": "WhatsApp username when one is available."
              },
              "parentBsuid": {
                "type": "string",
                "description": "Parent business-scoped user ID (`CC.ENT.…`), present only when WhatsApp reports one for this person. It identifies the person across the business portfolios enrolled in one parent account. It cannot be used to send messages or block people; use `id` or `bsuid`.",
                "example": "US.ENT.11815799212886844830"
              }
            },
            "required": [
              "id"
            ],
            "description": "Stable identifier for the conversation or account that originated the event.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `id` |\n| Alternative 2 | `null` |"
          },
          "callId": {
            "type": "string",
            "description": "Identifier of the WhatsApp call."
          },
          "durationSeconds": {
            "type": "integer",
            "description": "Total connected duration in seconds (0 if never answered).",
            "example": 42
          },
          "reason": {
            "type": "string",
            "description": "Termination reason: user_hangup | timeout | lost_connection | rejected | capacity | pod_lost | connection_failed | upstream_failed | call_restricted (WhatsApp refused the call because the number is restricted to calling people it has already chatted with).",
            "example": "user_hangup"
          },
          "direction": {
            "type": "string",
            "enum": [
              "inbound",
              "outbound"
            ],
            "description": "Call direction.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inbound` | Inbound. |\n| `outbound` | Outbound. |",
            "example": "inbound"
          },
          "hadVideo": {
            "type": "boolean",
            "description": "Whether the call carried video.",
            "example": false
          },
          "sessionConnection": {
            "type": "string",
            "enum": [
              "linked_device",
              "cloud_api"
            ],
            "description": "Connection of the session that carries the call: a linked device or the WhatsApp Business Cloud API.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `linked_device` | Linked device. |\n| `cloud_api` | Cloud api. |",
            "example": "linked_device"
          }
        },
        "required": [
          "from",
          "callId",
          "durationSeconds",
          "reason",
          "direction",
          "hadVideo"
        ]
      },
      "messaging__CallEndedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "call.ended"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `call.ended` | Call.ended. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CallEndedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CallTelemetryPayload": {
        "type": "object",
        "properties": {
          "callId": {
            "type": "string",
            "description": "Identifier of the WhatsApp call."
          },
          "setupMs": {
            "type": "integer",
            "description": "Time from offer to media_ready, in milliseconds.",
            "example": 850
          },
          "ringMs": {
            "type": "integer",
            "description": "Time spent ringing before accept, in milliseconds.",
            "example": 3200
          },
          "durationSeconds": {
            "type": "integer",
            "description": "Total connected duration in seconds.",
            "example": 42
          },
          "terminateReason": {
            "type": "string",
            "description": "Termination reason: user_hangup | timeout | lost_connection | rejected | capacity.",
            "example": "user_hangup"
          },
          "codec": {
            "type": "string",
            "description": "Negotiated audio codec's bare subtype; empty when the audio stream does not identify its codec.",
            "example": "opus"
          },
          "jitterMs": {
            "type": "number",
            "description": "Inbound RTP jitter for the audio stream, in milliseconds.",
            "example": 12.5
          },
          "packetsLost": {
            "type": "integer",
            "description": "Cumulative inbound RTP packets lost for the audio stream.",
            "example": 3
          },
          "rttMs": {
            "type": "number",
            "description": "Estimated round-trip time from the remote-inbound report, in milliseconds.",
            "example": 48.2
          },
          "recvKbps": {
            "type": "number",
            "description": "Total inbound volume across all RTP streams, in kilobits (cumulative).",
            "example": 2048
          },
          "sendKbps": {
            "type": "number",
            "description": "Total outbound volume across all RTP streams, in kilobits (cumulative).",
            "example": 2011
          }
        },
        "required": [
          "callId",
          "setupMs",
          "ringMs",
          "durationSeconds",
          "terminateReason",
          "codec",
          "jitterMs",
          "packetsLost",
          "rttMs",
          "recvKbps",
          "sendKbps"
        ]
      },
      "messaging__CallTelemetryEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "call.telemetry"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `call.telemetry` | Call.telemetry. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CallTelemetryPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CallParticipant": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "phoneNumber": {
            "type": "string",
            "description": "Phone number in international format."
          },
          "bsuid": {
            "type": "string",
            "description": "Business-scoped user identifier (BSUID), scoped to the owning business portfolio."
          },
          "username": {
            "type": "string",
            "description": "WhatsApp username when one is available."
          },
          "handRaised": {
            "type": "boolean",
            "description": "Whether this participant has raised their hand when reported by the call roster."
          },
          "audioMuted": {
            "type": "boolean",
            "enum": [
              false
            ],
            "description": "Reserved; false until WhatsApp exposes authoritative participant mute state.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `false` | False. |"
          },
          "video": {
            "type": "boolean",
            "enum": [
              false
            ],
            "description": "Reserved; false until WhatsApp exposes authoritative participant video state.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `false` | False. |"
          },
          "state": {
            "type": "string",
            "enum": [
              "invited",
              "ringing",
              "connected",
              "left"
            ],
            "description": "Current lifecycle state of this resource.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `invited` | Invited. |\n| `ringing` | Ringing. |\n| `connected` | Connected. |\n| `left` | Left. |"
          }
        },
        "required": [
          "id",
          "audioMuted",
          "video",
          "state"
        ]
      },
      "messaging__CallParticipantPayload": {
        "type": "object",
        "properties": {
          "callId": {
            "type": "string",
            "description": "Identifier of the WhatsApp call."
          },
          "participant": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CallParticipant"
              }
            ],
            "description": "Specifies participant for this messaging call participant payload."
          }
        },
        "required": [
          "callId",
          "participant"
        ]
      },
      "messaging__CallParticipantJoinedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "call.participant_joined"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `call.participant_joined` | Call.participant joined. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CallParticipantPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CallParticipantStateEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "call.participant_state"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `call.participant_state` | Call.participant state. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CallParticipantPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CallParticipantLeftPayload": {
        "type": "object",
        "properties": {
          "callId": {
            "type": "string",
            "description": "Identifier of the WhatsApp call."
          },
          "participantId": {
            "type": "string",
            "description": "Identifier for the participant."
          },
          "reason": {
            "type": "string",
            "description": "Reason for the reported state or outcome."
          }
        },
        "required": [
          "callId",
          "participantId"
        ]
      },
      "messaging__CallParticipantLeftEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "call.participant_left"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `call.participant_left` | Call.participant left. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CallParticipantLeftPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CallConnection": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_-]{8,64}$",
            "description": "Client-chosen connection identifier.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9_-]{8,64}$` |",
            "example": "conn_0123456789"
          },
          "participant": {
            "type": "string",
            "pattern": "^(?:client|server):[A-Za-z0-9._:@-]{1,128}$",
            "description": "Participant reference: `client:<id>` for a client token or `server:<id>` for a server credential.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^(?:client\\|server):[A-Za-z0-9._:@-]{1,128}$` |",
            "example": "client:agent-7"
          },
          "transport": {
            "type": "string",
            "enum": [
              "webrtc",
              "socket",
              "sip"
            ],
            "description": "`webrtc` for a browser connection, `socket` for a server or app connection, `sip` for a SIP trunk.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `webrtc` | Webrtc. |\n| `socket` | Socket. |\n| `sip` | Sip. |"
          }
        },
        "required": [
          "id",
          "participant",
          "transport"
        ]
      },
      "messaging__CallConnectionJoinedPayload": {
        "type": "object",
        "properties": {
          "callId": {
            "type": "string",
            "description": "Identifier of the WhatsApp call."
          },
          "connection": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CallConnection"
              }
            ],
            "description": "Specifies connection for this messaging call connection joined payload."
          }
        },
        "required": [
          "callId",
          "connection"
        ]
      },
      "messaging__CallConnectionJoinedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "call.connection_joined"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `call.connection_joined` | Call.connection joined. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CallConnectionJoinedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__ConversationIdentity": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "phoneNumber": {
            "type": "string",
            "pattern": "^\\+[1-9]\\d{1,14}$",
            "description": "Phone number in international format.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\+[1-9]\\d{1,14}$` |"
          },
          "bsuid": {
            "type": "string",
            "pattern": "^[A-Z]{2}\\.[A-Za-z0-9]{1,128}$",
            "description": "Business-scoped user identifier (BSUID), scoped to the owning business portfolio.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Z]{2}\\.[A-Za-z0-9]{1,128}$` |"
          },
          "username": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "WhatsApp username when one is available.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "messaging__CallPermissionChangedPayload": {
        "type": "object",
        "properties": {
          "conversation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ConversationIdentity"
              }
            ],
            "description": "Public conversation identifier or E.164 phone number."
          },
          "status": {
            "type": "string",
            "enum": [
              "none",
              "temporary",
              "permanent",
              "revoked"
            ],
            "description": "`temporary`: granted until `expiresAt`. `permanent`: granted without expiry. `revoked`: declined or withdrawn. `none`: no permission.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `temporary` | Temporary. |\n| `permanent` | Permanent. |\n| `revoked` | Revoked. |"
          },
          "previousStatus": {
            "type": "string",
            "enum": [
              "none",
              "temporary",
              "permanent",
              "revoked"
            ],
            "description": "Specifies previous status for this messaging call permission changed payload.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `temporary` | Temporary. |\n| `permanent` | Permanent. |\n| `revoked` | Revoked. |"
          },
          "expiresAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "When a temporary permission ends; null otherwise. No event is sent when it ends.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "source": {
            "type": "string",
            "enum": [
              "user_action",
              "automatic",
              "sync",
              "call_refused"
            ],
            "description": "`user_action`: the person answered a call permission request or changed it in WhatsApp. `automatic`: WhatsApp granted it when the person called you, or withdrew it after unanswered calls. `sync`: a permission read found a different state. `call_refused`: WhatsApp refused a call for lack of permission.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `user_action` | User action. |\n| `automatic` | Automatic. |\n| `sync` | Sync. |\n| `call_refused` | Call refused. |"
          },
          "changedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for changed at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "conversation",
          "status",
          "previousStatus",
          "expiresAt",
          "source",
          "changedAt"
        ]
      },
      "messaging__CallPermissionChangedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "call.permission_changed"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `call.permission_changed` | Call.permission changed. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CallPermissionChangedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CallConnectionLeftPayload": {
        "type": "object",
        "properties": {
          "callId": {
            "type": "string",
            "description": "Identifier of the WhatsApp call."
          },
          "connectionId": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_-]{8,64}$",
            "description": "Client-chosen connection identifier.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9_-]{8,64}$` |",
            "example": "conn_0123456789"
          },
          "participant": {
            "type": "string",
            "pattern": "^(?:client|server):[A-Za-z0-9._:@-]{1,128}$",
            "description": "Participant reference: `client:<id>` for a client token or `server:<id>` for a server credential.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^(?:client\\|server):[A-Za-z0-9._:@-]{1,128}$` |",
            "example": "client:agent-7"
          },
          "reason": {
            "type": "string",
            "enum": [
              "left",
              "replaced",
              "claimed",
              "call_ended",
              "sip_busy",
              "sip_declined",
              "sip_no_answer",
              "sip_unavailable",
              "sip_auth_failed"
            ],
            "description": "`left`: the connection left. `replaced`: a reconnect reused the connection id. `claimed`: another participant claimed the call. `sip_busy`, `sip_declined`, `sip_no_answer`, `sip_unavailable` and `sip_auth_failed`: a SIP trunk did not join the call. `call_ended`: the call ended while a SIP trunk was still ringing. A SIP trunk that never joined the call (one of the `sip_*` reasons, or `call_ended` while it was still ringing) reports only `call.connection_left`, with no `call.connection_joined` before it. Connections still open when the call ends are closed by `call.ended` without a separate event.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `left` | Left. |\n| `replaced` | Replaced. |\n| `claimed` | Claimed. |\n| `call_ended` | Call ended. |\n| `sip_busy` | Sip busy. |\n| `sip_declined` | Sip declined. |\n| `sip_no_answer` | Sip no answer. |\n| `sip_unavailable` | Sip unavailable. |\n| `sip_auth_failed` | Sip auth failed. |",
            "example": "left"
          }
        },
        "required": [
          "callId",
          "connectionId",
          "participant",
          "reason"
        ]
      },
      "messaging__CallConnectionLeftEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "call.connection_left"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `call.connection_left` | Call.connection left. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CallConnectionLeftPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__UsageRecordedPayload": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Usage record id. Stable across revisions.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "meter": {
            "type": "string",
            "enum": [
              "call.duration",
              "call.cloud_pulses",
              "campaign.call",
              "tts.characters",
              "tts.seconds",
              "stt.seconds",
              "agent.seconds",
              "agent.tokens",
              "agent.provider_cost",
              "channels.peak",
              "storage.byte_days"
            ],
            "description": "What was measured. Calls produce `call.duration`, and outgoing Cloud API calls also `call.cloud_pulses`.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `call.duration` | Call.duration. |\n| `call.cloud_pulses` | Call.cloud pulses. |\n| `campaign.call` | Campaign.call. |\n| `tts.characters` | Tts.characters. |\n| `tts.seconds` | Tts.seconds. |\n| `stt.seconds` | Stt.seconds. |\n| `agent.seconds` | Agent.seconds. |\n| `agent.tokens` | Agent.tokens. |\n| `agent.provider_cost` | Agent.provider cost. |\n| `channels.peak` | Channels.peak. |\n| `storage.byte_days` | Storage.byte days. |",
            "example": "call.duration"
          },
          "quantity": {
            "type": "number",
            "minimum": 0,
            "description": "Measured amount in `unit`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |",
            "example": 42
          },
          "unit": {
            "type": "string",
            "enum": [
              "second",
              "pulse",
              "call",
              "character",
              "token",
              "provider_unit",
              "channel",
              "byte_day"
            ],
            "example": "second",
            "description": "Specifies unit for this messaging usage recorded payload.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `second` | Second. |\n| `pulse` | Pulse. |\n| `call` | Call. |\n| `character` | Character. |\n| `token` | Token. |\n| `provider_unit` | Provider unit. |\n| `channel` | Channel. |\n| `byte_day` | Byte day. |"
          },
          "dimensions": {
            "type": "object",
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "description": "Closed, per-meter attributes. Call meters carry `direction`, `upstream` (`linked_device` or `cloud_api`), `origin`, `participants`, `connections`, `sipLegs` and `video`.",
            "example": {
              "direction": "outbound",
              "upstream": "linked_device",
              "origin": "direct",
              "participants": 1,
              "connections": 1,
              "sipLegs": 0,
              "video": false
            }
          },
          "keySource": {
            "type": "string",
            "enum": [
              "none",
              "managed",
              "customer"
            ],
            "description": "Whose provider key produced the usage. `none` for calls.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `managed` | Managed. |\n| `customer` | Customer. |"
          },
          "sourceKind": {
            "type": "string",
            "enum": [
              "call",
              "attempt",
              "flow_run",
              "conversation",
              "asset",
              "team"
            ],
            "description": "Category assigned to source.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `call` | Call. |\n| `attempt` | Attempt. |\n| `flow_run` | Flow run. |\n| `conversation` | Conversation. |\n| `asset` | Asset. |\n| `team` | Team. |"
          },
          "sourceId": {
            "type": "string",
            "description": "The call id for call meters."
          },
          "projectId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "session": {
            "type": [
              "string",
              "null"
            ],
            "description": "The number (session name) the usage belongs to.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time",
            "description": "When the usage happened. For calls, when the call ended.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "recordedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for recorded at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "revision": {
            "type": "integer",
            "minimum": 1,
            "description": "Starts at 1. A higher revision of the same `id` replaces the earlier one.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
          },
          "pricingState": {
            "type": "string",
            "enum": [
              "unpriced",
              "priced",
              "waived",
              "settled"
            ],
            "description": "`unpriced` while usage is measured but not charged.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `unpriced` | Unpriced. |\n| `priced` | Priced. |\n| `waived` | Waived. |\n| `settled` | Settled. |"
          },
          "rateCard": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
              },
              "version": {
                "type": "integer",
                "description": "Specifies version for this rate card."
              }
            },
            "required": [
              "id",
              "version"
            ],
            "description": "Structured rate card values for this messaging usage recorded payload.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `id`, `version` |\n| Alternative 2 | `null` |"
          },
          "pricedCredits": {
            "type": [
              "number",
              "null"
            ],
            "description": "Specifies priced credits for this messaging usage recorded payload.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "id",
          "meter",
          "quantity",
          "unit",
          "dimensions",
          "keySource",
          "sourceKind",
          "sourceId",
          "projectId",
          "session",
          "occurredAt",
          "recordedAt",
          "revision",
          "pricingState",
          "rateCard",
          "pricedCredits"
        ]
      },
      "messaging__UsageRecordedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "usage.recorded"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `usage.recorded` | Usage.recorded. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__UsageRecordedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__NewsletterUpdatePayload": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier for this resource."
          },
          "action": {
            "type": "string",
            "description": "Action represented by this messaging newsletter update payload."
          },
          "muted": {
            "type": "boolean",
            "description": "Whether notifications are muted."
          }
        },
        "required": [
          "id",
          "action"
        ]
      },
      "messaging__NewsletterUpdateEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "newsletter.update"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `newsletter.update` | Newsletter.update. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__NewsletterUpdatePayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__BlocklistChange": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "bsuid": {
            "type": "string",
            "description": "Business-scoped user identifier (BSUID), scoped to the owning business portfolio."
          },
          "phoneNumber": {
            "type": "string",
            "description": "Phone number in international format."
          },
          "username": {
            "type": "string",
            "description": "WhatsApp username when one is available."
          },
          "action": {
            "type": "string",
            "description": "Action represented by this messaging blocklist change."
          }
        },
        "required": [
          "id",
          "action"
        ]
      },
      "messaging__BlocklistUpdatePayload": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string",
            "description": "Action represented by this messaging blocklist update payload."
          },
          "changes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__BlocklistChange"
            },
            "description": "Changes associated with this messaging blocklist update payload."
          }
        },
        "required": [
          "action",
          "changes"
        ]
      },
      "messaging__BlocklistUpdateEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "blocklist.update"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `blocklist.update` | Blocklist.update. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__BlocklistUpdatePayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__LabelsUpdatePayload": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string",
            "description": "Action: label_edit, label_association_chat, label_association_message, star",
            "example": "label_edit"
          },
          "labelId": {
            "type": "string",
            "description": "Label ID affected by the action"
          },
          "from": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__IdentityRef"
              },
              {
                "description": "Chat the label action applies to"
              }
            ],
            "description": "Stable identifier for the conversation or account that originated the event."
          },
          "label": {
            "type": "string",
            "description": "Legacy field: the label's display name for label_edit, and the label ID for association actions. Prefer labelId and name."
          },
          "name": {
            "type": "string",
            "description": "Label display name (present for label_edit)"
          },
          "color": {
            "type": "integer",
            "description": "Label color index (present for label_edit)\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int32` |",
            "format": "int32"
          },
          "orderIndex": {
            "type": "integer",
            "description": "Label ordering index when supplied by app state\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int32` |",
            "format": "int32"
          },
          "deleted": {
            "type": "boolean",
            "description": "Whether the label definition was deleted"
          },
          "labeled": {
            "type": "boolean",
            "description": "Whether the chat or message association is active"
          },
          "observedAt": {
            "type": "integer",
            "description": "Unix timestamp in seconds when the app-state mutation was observed\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |",
            "format": "int64"
          },
          "messageId": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Polymorfa message ID (present for star and message-association actions)\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "starred": {
            "type": "boolean",
            "description": "Whether the message is starred (present for star actions)"
          }
        },
        "required": [
          "action"
        ]
      },
      "messaging__LabelsUpdateEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "labels.update"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `labels.update` | Labels.update. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__LabelsUpdatePayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__BusinessQuickReplyUpdatePayload": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier for this resource."
          },
          "shortcut": {
            "type": "string",
            "description": "Specifies shortcut for this messaging business quick reply update payload."
          },
          "message": {
            "type": "string",
            "description": "Message content carried by the updated business quick reply."
          },
          "keywords": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Keywords associated with this messaging business quick reply update payload."
          },
          "count": {
            "type": "integer",
            "minimum": 0,
            "description": "Usage count recorded for this business quick reply.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "deleted": {
            "type": "boolean",
            "description": "Whether deleted."
          },
          "associatedLabelIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Associated label ids associated with this messaging business quick reply update payload."
          },
          "observedAt": {
            "type": "integer",
            "description": "Unix timestamp in seconds when Polymorfa observed this state."
          },
          "fromFullSync": {
            "type": "boolean",
            "description": "Whether from full sync."
          }
        },
        "required": [
          "id",
          "shortcut",
          "message",
          "keywords",
          "count",
          "deleted",
          "associatedLabelIds",
          "observedAt",
          "fromFullSync"
        ]
      },
      "messaging__BusinessQuickReplyUpdateEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "business.quick_reply.update"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `business.quick_reply.update` | Business.quick reply.update. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__BusinessQuickReplyUpdatePayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__ContactsSyncPayload": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "contacts"
            ],
            "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `contacts` | Contacts. |"
          },
          "value": {
            "type": "object",
            "additionalProperties": {},
            "description": "Value assigned to this field."
          }
        },
        "required": [
          "kind",
          "value"
        ]
      },
      "messaging__ContactsSyncEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "contact.sync"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `contact.sync` | Contact.sync. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ContactsSyncPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__MessageEchoPayload": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "whatsapp_business_app"
            ],
            "description": "Specifies source for this messaging message echo payload.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `whatsapp_business_app` | Whatsapp business app. |"
          },
          "value": {
            "type": "object",
            "additionalProperties": {},
            "description": "Value assigned to this field."
          }
        },
        "required": [
          "source",
          "value"
        ]
      },
      "messaging__MessageEchoEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "message.echo"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `message.echo` | Message.echo. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__MessageEchoPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__LinkedHistorySyncPayload": {
        "type": "object",
        "properties": {
          "whatsapp_ids": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__WhatsAppMessageIds"
              }
            ],
            "description": "Exact observed provider references under linked_devices, official_api, or both. Use the Polymorfa id for message actions.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `linked_devices` |\n| Alternative 2 | Type: `object`; Required fields: `official_api` |"
          },
          "whatsapp_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "Temporary singular provider reference for older consumers. Use whatsapp_ids for transport-specific references.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `512` characters |",
            "deprecated": true
          },
          "original_whatsapp_ids": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__WhatsAppMessageIds"
              }
            ],
            "description": "Specifies original whatsapp ids for this messaging linked history sync payload.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `linked_devices` |\n| Alternative 2 | Type: `object`; Required fields: `official_api` |"
          },
          "original_whatsapp_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "Temporary singular original provider reference for older consumers. Use original_whatsapp_ids for transport-specific references.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `512` characters |",
            "deprecated": true
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "pattern": "^[1-9][0-9]{0,18}$",
                  "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
                  "example": "739182640518203"
                },
                "whatsapp_ids": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/messaging__WhatsAppMessageIds"
                    }
                  ],
                  "description": "Exact observed provider references under linked_devices, official_api, or both. Use the Polymorfa id for message actions.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `linked_devices` |\n| Alternative 2 | Type: `object`; Required fields: `official_api` |"
                },
                "whatsapp_id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 512,
                  "description": "Temporary singular provider reference for older consumers. Use whatsapp_ids for transport-specific references.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `512` characters |",
                  "deprecated": true
                },
                "conversation": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/messaging__IdentityRef"
                    }
                  ],
                  "description": "Public conversation identifier or E.164 phone number."
                },
                "fromMe": {
                  "type": "boolean",
                  "description": "Whether the connected account originated the message."
                }
              },
              "required": [
                "id",
                "whatsapp_ids",
                "conversation"
              ]
            },
            "description": "Messages associated with this messaging linked history sync payload."
          },
          "mode": {
            "type": "string",
            "enum": [
              "deliver"
            ],
            "description": "Operating mode selected for this feature.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `deliver` | Deliver. |"
          },
          "syncType": {
            "type": "string",
            "description": "Category assigned to sync."
          },
          "chunkOrder": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies chunk order for this messaging linked history sync payload.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "progress": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100,
            "description": "Specifies progress for this messaging linked history sync payload.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `100` (inclusive) |"
          },
          "fileLength": {
            "type": "integer",
            "minimum": 0,
            "description": "Size of the media file in bytes.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "conversationCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of conversations.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "messageCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of messages.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "pushNameCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of push names.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "statusMessageCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of status messages.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "whatsapp": {
            "type": "object",
            "properties": {
              "encoding": {
                "type": "string",
                "enum": [
                  "gzip-base64-protobuf"
                ],
                "description": "Specifies encoding for this whatsapp.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `gzip-base64-protobuf` | Gzip base64 protobuf. |"
              },
              "data": {
                "type": "string",
                "description": "Structured data carried by this object."
              }
            },
            "required": [
              "encoding",
              "data"
            ],
            "description": "Unmodified provider archive. Its protobuf retains provider addresses; use messages for Polymorfa identities."
          }
        },
        "required": [
          "whatsapp_ids",
          "messages",
          "mode",
          "syncType",
          "fileLength",
          "conversationCount",
          "messageCount",
          "pushNameCount",
          "statusMessageCount",
          "whatsapp"
        ]
      },
      "messaging__CloudHistorySyncPayload": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "history"
            ],
            "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `history` | History. |"
          },
          "value": {
            "type": "object",
            "additionalProperties": {},
            "description": "Value assigned to this field."
          }
        },
        "required": [
          "kind",
          "value"
        ]
      },
      "messaging__HistorySyncPayload": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/messaging__LinkedHistorySyncPayload"
          },
          {
            "$ref": "#/components/schemas/messaging__CloudHistorySyncPayload"
          }
        ]
      },
      "messaging__HistorySyncEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "history.sync"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `history.sync` | History.sync. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__HistorySyncPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `mode`: `deliver`; Required fields: `whatsapp_ids`, `messages`, `mode`, `syncType`, `fileLength`, `conversationCount`, `messageCount`, `pushNameCount`, `statusMessageCount`, `whatsapp` |\n| Alternative 2 | Type: `object`; Field `kind`: `history`; Required fields: `kind`, `value` |"
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CommandResultPayload": {
        "type": "object",
        "properties": {
          "requestId": {
            "type": "string",
            "description": "Identifier used to correlate this request across systems."
          },
          "command": {
            "type": "string",
            "description": "Specifies command for this messaging command result payload."
          },
          "success": {
            "type": "boolean",
            "description": "Whether the request succeeded."
          },
          "data": {
            "type": "object",
            "additionalProperties": {},
            "description": "Structured data carried by this object."
          },
          "error": {
            "type": "string",
            "description": "Error details returned when the operation fails."
          }
        },
        "required": [
          "requestId",
          "command",
          "success"
        ]
      },
      "messaging__CommandResultEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "command.result"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `command.result` | Command.result. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CommandResultPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CustomerEnabledPayload": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for occurred at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "customerId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "actorKind": {
            "type": "string",
            "enum": [
              "better_auth",
              "org_key",
              "project_token",
              "cli_grant",
              "system"
            ],
            "description": "Category assigned to actor.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `better_auth` | Better auth. |\n| `org_key` | Org key. |\n| `project_token` | Project token. |\n| `cli_grant` | Cli grant. |\n| `system` | System. |"
          },
          "migratedNumberCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of migrated numbers.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "eventId",
          "occurredAt",
          "organizationId",
          "projectId",
          "customerId",
          "actorKind",
          "migratedNumberCount"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerEnabledEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "customer.enabled"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `customer.enabled` | Customer.enabled. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CustomerEnabledPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerCreatedPayload": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for occurred at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "customerId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "actorKind": {
            "type": "string",
            "enum": [
              "better_auth",
              "org_key",
              "project_token",
              "cli_grant",
              "system"
            ],
            "description": "Category assigned to actor.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `better_auth` | Better auth. |\n| `org_key` | Org key. |\n| `project_token` | Project token. |\n| `cli_grant` | Cli grant. |\n| `system` | System. |"
          }
        },
        "required": [
          "eventId",
          "occurredAt",
          "organizationId",
          "projectId",
          "customerId",
          "actorKind"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerCreatedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "customer.created"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `customer.created` | Customer.created. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CustomerCreatedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerUpdatedPayload": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for occurred at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "customerId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "actorKind": {
            "type": "string",
            "enum": [
              "better_auth",
              "org_key",
              "project_token",
              "cli_grant",
              "system"
            ],
            "description": "Category assigned to actor.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `better_auth` | Better auth. |\n| `org_key` | Org key. |\n| `project_token` | Project token. |\n| `cli_grant` | Cli grant. |\n| `system` | System. |"
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "name",
                "phone",
                "externalCustomerId"
              ]
            },
            "minItems": 1,
            "maxItems": 3,
            "description": "Fields associated with this messaging customer updated payload.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `name` | Name. |\n| `phone` | Phone. |\n| `externalCustomerId` | External customer id. |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `3` items |"
          }
        },
        "required": [
          "eventId",
          "occurredAt",
          "organizationId",
          "projectId",
          "customerId",
          "actorKind",
          "fields"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerUpdatedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "customer.updated"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `customer.updated` | Customer.updated. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CustomerUpdatedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerArchivingPayload": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for occurred at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "customerId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "actorKind": {
            "type": "string",
            "enum": [
              "better_auth",
              "org_key",
              "project_token",
              "cli_grant",
              "system"
            ],
            "description": "Category assigned to actor.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `better_auth` | Better auth. |\n| `org_key` | Org key. |\n| `project_token` | Project token. |\n| `cli_grant` | Cli grant. |\n| `system` | System. |"
          },
          "blockingNumberCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of blocking numbers.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "revokedPairingLinkCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of revoked pairing links.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "eventId",
          "occurredAt",
          "organizationId",
          "projectId",
          "customerId",
          "actorKind",
          "blockingNumberCount",
          "revokedPairingLinkCount"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerArchivingEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "customer.archiving"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `customer.archiving` | Customer.archiving. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CustomerArchivingPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerArchivedPayload": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for occurred at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "customerId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "actorKind": {
            "type": "string",
            "enum": [
              "better_auth",
              "org_key",
              "project_token",
              "cli_grant",
              "system"
            ],
            "description": "Category assigned to actor.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `better_auth` | Better auth. |\n| `org_key` | Org key. |\n| `project_token` | Project token. |\n| `cli_grant` | Cli grant. |\n| `system` | System. |"
          }
        },
        "required": [
          "eventId",
          "occurredAt",
          "organizationId",
          "projectId",
          "customerId",
          "actorKind"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerArchivedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "customer.archived"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `customer.archived` | Customer.archived. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CustomerArchivedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerRestoredPayload": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for occurred at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "customerId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "actorKind": {
            "type": "string",
            "enum": [
              "better_auth",
              "org_key",
              "project_token",
              "cli_grant",
              "system"
            ],
            "description": "Category assigned to actor.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `better_auth` | Better auth. |\n| `org_key` | Org key. |\n| `project_token` | Project token. |\n| `cli_grant` | Cli grant. |\n| `system` | System. |"
          }
        },
        "required": [
          "eventId",
          "occurredAt",
          "organizationId",
          "projectId",
          "customerId",
          "actorKind"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerRestoredEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "customer.restored"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `customer.restored` | Customer.restored. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CustomerRestoredPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerPairingLinkCreatedPayload": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for occurred at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "customerId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "actorKind": {
            "type": "string",
            "enum": [
              "better_auth",
              "org_key",
              "project_token",
              "cli_grant",
              "system"
            ],
            "description": "Category assigned to actor.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `better_auth` | Better auth. |\n| `org_key` | Org key. |\n| `project_token` | Project token. |\n| `cli_grant` | Cli grant. |\n| `system` | System. |"
          },
          "pairingLinkId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the pairing link.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        },
        "required": [
          "eventId",
          "occurredAt",
          "organizationId",
          "projectId",
          "customerId",
          "actorKind",
          "pairingLinkId"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerPairingLinkCreatedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "customer.pairing_link.created"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `customer.pairing_link.created` | Customer.pairing link.created. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CustomerPairingLinkCreatedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerPairingLinkOpenedPayload": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for occurred at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "customerId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "actorKind": {
            "type": "string",
            "enum": [
              "better_auth",
              "org_key",
              "project_token",
              "cli_grant",
              "system"
            ],
            "description": "Category assigned to actor.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `better_auth` | Better auth. |\n| `org_key` | Org key. |\n| `project_token` | Project token. |\n| `cli_grant` | Cli grant. |\n| `system` | System. |"
          },
          "pairingLinkId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the pairing link.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        },
        "required": [
          "eventId",
          "occurredAt",
          "organizationId",
          "projectId",
          "customerId",
          "actorKind",
          "pairingLinkId"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerPairingLinkOpenedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "customer.pairing_link.opened"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `customer.pairing_link.opened` | Customer.pairing link.opened. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CustomerPairingLinkOpenedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerPairingLinkConnectedPayload": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for occurred at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "customerId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "actorKind": {
            "type": "string",
            "enum": [
              "better_auth",
              "org_key",
              "project_token",
              "cli_grant",
              "system"
            ],
            "description": "Category assigned to actor.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `better_auth` | Better auth. |\n| `org_key` | Org key. |\n| `project_token` | Project token. |\n| `cli_grant` | Cli grant. |\n| `system` | System. |"
          },
          "pairingLinkId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the pairing link.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "sessionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        },
        "required": [
          "eventId",
          "occurredAt",
          "organizationId",
          "projectId",
          "customerId",
          "actorKind",
          "pairingLinkId",
          "sessionId"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerPairingLinkConnectedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "customer.pairing_link.connected"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `customer.pairing_link.connected` | Customer.pairing link.connected. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CustomerPairingLinkConnectedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerPairingLinkFailedPayload": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for occurred at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "customerId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "actorKind": {
            "type": "string",
            "enum": [
              "better_auth",
              "org_key",
              "project_token",
              "cli_grant",
              "system"
            ],
            "description": "Category assigned to actor.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `better_auth` | Better auth. |\n| `org_key` | Org key. |\n| `project_token` | Project token. |\n| `cli_grant` | Cli grant. |\n| `system` | System. |"
          },
          "pairingLinkId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the pairing link.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "errorCode": {
            "type": "string",
            "pattern": "^[a-z0-9_]{1,64}$",
            "description": "Machine-readable error code for this messaging customer pairing link failed payload.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z0-9_]{1,64}$` |"
          }
        },
        "required": [
          "eventId",
          "occurredAt",
          "organizationId",
          "projectId",
          "customerId",
          "actorKind",
          "pairingLinkId",
          "errorCode"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerPairingLinkFailedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "customer.pairing_link.failed"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `customer.pairing_link.failed` | Customer.pairing link.failed. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CustomerPairingLinkFailedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerPairingLinkExpiredPayload": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for occurred at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "customerId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "actorKind": {
            "type": "string",
            "enum": [
              "better_auth",
              "org_key",
              "project_token",
              "cli_grant",
              "system"
            ],
            "description": "Category assigned to actor.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `better_auth` | Better auth. |\n| `org_key` | Org key. |\n| `project_token` | Project token. |\n| `cli_grant` | Cli grant. |\n| `system` | System. |"
          },
          "pairingLinkId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the pairing link.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        },
        "required": [
          "eventId",
          "occurredAt",
          "organizationId",
          "projectId",
          "customerId",
          "actorKind",
          "pairingLinkId"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerPairingLinkExpiredEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "customer.pairing_link.expired"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `customer.pairing_link.expired` | Customer.pairing link.expired. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CustomerPairingLinkExpiredPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerPairingLinkRevokedPayload": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for occurred at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "customerId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "actorKind": {
            "type": "string",
            "enum": [
              "better_auth",
              "org_key",
              "project_token",
              "cli_grant",
              "system"
            ],
            "description": "Category assigned to actor.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `better_auth` | Better auth. |\n| `org_key` | Org key. |\n| `project_token` | Project token. |\n| `cli_grant` | Cli grant. |\n| `system` | System. |"
          },
          "pairingLinkId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the pairing link.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "reason": {
            "type": "string",
            "enum": [
              "customer_archived",
              "phone_mismatch_limit",
              "exchange_failure_limit",
              "terminal_failure"
            ],
            "description": "Reason for the reported state or outcome.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `customer_archived` | Customer archived. |\n| `phone_mismatch_limit` | Phone mismatch limit. |\n| `exchange_failure_limit` | Exchange failure limit. |\n| `terminal_failure` | Terminal failure. |"
          }
        },
        "required": [
          "eventId",
          "occurredAt",
          "organizationId",
          "projectId",
          "customerId",
          "actorKind",
          "pairingLinkId"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerPairingLinkRevokedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "customer.pairing_link.revoked"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `customer.pairing_link.revoked` | Customer.pairing link.revoked. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CustomerPairingLinkRevokedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerNumberAttachedPayload": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for occurred at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "customerId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "actorKind": {
            "type": "string",
            "enum": [
              "better_auth",
              "org_key",
              "project_token",
              "cli_grant",
              "system"
            ],
            "description": "Category assigned to actor.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `better_auth` | Better auth. |\n| `org_key` | Org key. |\n| `project_token` | Project token. |\n| `cli_grant` | Cli grant. |\n| `system` | System. |"
          },
          "sessionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "pairingLinkId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the pairing link.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        },
        "required": [
          "eventId",
          "occurredAt",
          "organizationId",
          "projectId",
          "customerId",
          "actorKind",
          "sessionId"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerNumberAttachedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "customer.number.attached"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `customer.number.attached` | Customer.number.attached. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CustomerNumberAttachedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerNumberTransferredPayload": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for occurred at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "customerId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "actorKind": {
            "type": "string",
            "enum": [
              "better_auth",
              "org_key",
              "project_token",
              "cli_grant",
              "system"
            ],
            "description": "Category assigned to actor.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `better_auth` | Better auth. |\n| `org_key` | Org key. |\n| `project_token` | Project token. |\n| `cli_grant` | Cli grant. |\n| `system` | System. |"
          },
          "sessionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "sourceCustomerId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the source customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        },
        "required": [
          "eventId",
          "occurredAt",
          "organizationId",
          "projectId",
          "customerId",
          "actorKind",
          "sessionId",
          "sourceCustomerId"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerNumberTransferredEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "customer.number.transferred"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `customer.number.transferred` | Customer.number.transferred. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CustomerNumberTransferredPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerNumberDisconnectedPayload": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for occurred at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "customerId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "actorKind": {
            "type": "string",
            "enum": [
              "better_auth",
              "org_key",
              "project_token",
              "cli_grant",
              "system"
            ],
            "description": "Category assigned to actor.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `better_auth` | Better auth. |\n| `org_key` | Org key. |\n| `project_token` | Project token. |\n| `cli_grant` | Cli grant. |\n| `system` | System. |"
          },
          "sessionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "reason": {
            "type": "string",
            "pattern": "^[a-z0-9_]{1,64}$",
            "description": "Reason for the reported state or outcome.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z0-9_]{1,64}$` |"
          }
        },
        "required": [
          "eventId",
          "occurredAt",
          "organizationId",
          "projectId",
          "customerId",
          "actorKind",
          "sessionId",
          "reason"
        ],
        "additionalProperties": false
      },
      "messaging__CustomerNumberDisconnectedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "customer.number.disconnected"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `customer.number.disconnected` | Customer.number.disconnected. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CustomerNumberDisconnectedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ],
        "additionalProperties": false
      },
      "messaging__VoiceAssetReadyPayload": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "string",
            "format": "uuid",
            "description": "Stable event ID for receiver idempotency.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for occurred at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "assetId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the asset.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "name": {
            "type": "string",
            "description": "Human-readable name for this resource."
          },
          "source": {
            "type": "string",
            "enum": [
              "upload",
              "tts"
            ],
            "description": "`upload` or `tts`. Treat unknown values as `upload`.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `upload` | Upload. |\n| `tts` | Tts. |"
          },
          "durationMs": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "description": "Specifies duration ms for this messaging voice asset ready payload.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | Greater than `0` |"
          },
          "contentSha256": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$",
            "description": "SHA-256 (hex) of the converted 16 kHz mono PCM audio.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[0-9a-f]{64}$` |"
          },
          "originalFormat": {
            "type": "string",
            "enum": [
              "mp3",
              "wav",
              "ogg",
              "m4a"
            ],
            "description": "Specifies original format for this messaging voice asset ready payload.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `mp3` | Mp3. |\n| `wav` | Wav. |\n| `ogg` | Ogg. |\n| `m4a` | M4a. |"
          }
        },
        "required": [
          "eventId",
          "occurredAt",
          "organizationId",
          "projectId",
          "assetId",
          "name",
          "source",
          "durationMs",
          "contentSha256",
          "originalFormat"
        ],
        "additionalProperties": false
      },
      "messaging__VoiceAssetReadyEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "voice.asset_ready"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `voice.asset_ready` | Voice.asset ready. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__VoiceAssetReadyPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ],
        "additionalProperties": false
      },
      "messaging__VoiceAssetFailedPayload": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "string",
            "format": "uuid",
            "description": "Stable event ID for receiver idempotency.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for occurred at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "assetId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the asset.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "name": {
            "type": "string",
            "description": "Human-readable name for this resource."
          },
          "source": {
            "type": "string",
            "enum": [
              "upload",
              "tts"
            ],
            "description": "`upload` or `tts`. Treat unknown values as `upload`.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `upload` | Upload. |\n| `tts` | Tts. |"
          },
          "failureReason": {
            "type": "string",
            "enum": [
              "unsupported_format",
              "too_large",
              "too_long",
              "decode_failed",
              "silent",
              "tts_failed",
              "processing_failed"
            ],
            "description": "Treat unknown values as `processing_failed`.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `unsupported_format` | Unsupported format. |\n| `too_large` | Too large. |\n| `too_long` | Too long. |\n| `decode_failed` | Decode failed. |\n| `silent` | Silent. |\n| `tts_failed` | Tts failed. |\n| `processing_failed` | Processing failed. |"
          }
        },
        "required": [
          "eventId",
          "occurredAt",
          "organizationId",
          "projectId",
          "assetId",
          "name",
          "source",
          "failureReason"
        ],
        "additionalProperties": false
      },
      "messaging__VoiceAssetFailedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "voice.asset_failed"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `voice.asset_failed` | Voice.asset failed. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__VoiceAssetFailedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ],
        "additionalProperties": false
      },
      "messaging__BanSafeRequiredFinding": {
        "type": "object",
        "properties": {
          "findingKey": {
            "type": "string",
            "pattern": "^[a-z0-9_]{1,64}$",
            "description": "Stable finding identifier.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z0-9_]{1,64}$` |",
            "example": "typing_absent"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 160,
            "description": "Customer-facing finding title.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `160` characters |",
            "example": "Messages sent without showing that you are typing"
          },
          "severity": {
            "type": "string",
            "enum": [
              "info",
              "warning",
              "critical"
            ],
            "description": "Specifies severity for this messaging ban safe required finding.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `info` | Info. |\n| `warning` | Warning. |\n| `critical` | Critical. |"
          }
        },
        "required": [
          "findingKey",
          "title",
          "severity"
        ],
        "additionalProperties": false
      },
      "messaging__BanSafeActionPayload": {
        "type": "object",
        "properties": {
          "phoneNumber": {
            "type": "string",
            "pattern": "^\\+[1-9]\\d{1,14}$",
            "description": "The customer's own number in E.164 format.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\+[1-9]\\d{1,14}$` |",
            "example": "+15551234567"
          },
          "action": {
            "type": "string",
            "enum": [
              "applied",
              "changed",
              "lifted",
              "daily_allowance_reached"
            ],
            "description": "Whether the restriction was newly applied, moved, or removed. `daily_allowance_reached` reports that the number spent its warm-up allowance for the day; nothing on the ladder moved and sending resumes at the next reset.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `applied` | Applied. |\n| `changed` | Changed. |\n| `lifted` | Lifted. |\n| `daily_allowance_reached` | Daily allowance reached. |"
          },
          "scope": {
            "type": "string",
            "enum": [
              "number",
              "organization"
            ],
            "description": "Whether this covers one number or every number in the workspace.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `number` | Number. |\n| `organization` | Organization. |"
          },
          "rung": {
            "type": "string",
            "enum": [
              "none",
              "notify",
              "throttle",
              "block_cold",
              "suspend"
            ],
            "description": "Restriction now in force.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `notify` | Notify. |\n| `throttle` | Throttle. |\n| `block_cold` | Block cold. |\n| `suspend` | Suspend. |"
          },
          "previousRung": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "none",
              "notify",
              "throttle",
              "block_cold",
              "suspend",
              null
            ],
            "description": "Restriction previously in force, or null when none was.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `notify` | Notify. |\n| `throttle` | Throttle. |\n| `block_cold` | Block cold. |\n| `suspend` | Suspend. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `none` or `notify` or `throttle` or `block_cold` or `suspend` |\n| Alternative 2 | `null` |"
          },
          "reason": {
            "type": "string",
            "enum": [
              "health",
              "finding",
              "org_pattern",
              "repeat",
              "restriction",
              "operator",
              "health_model_cutover",
              "warmup"
            ],
            "description": "Why the restriction changed.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `health` | Health. |\n| `finding` | Finding. |\n| `org_pattern` | Org pattern. |\n| `repeat` | Repeat. |\n| `restriction` | Restriction. |\n| `operator` | Operator. |\n| `health_model_cutover` | Health model cutover. |\n| `warmup` | Warmup. |"
          },
          "health": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 100,
            "description": "Measured health from 0 (worst) to 100 (best), or null when not measured.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` through `100` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `100` (inclusive) |",
            "example": 62
          },
          "healthBand": {
            "type": "string",
            "enum": [
              "good",
              "fair",
              "poor",
              "failing",
              "unknown"
            ],
            "description": "Health band matching health.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `good` | Good. |\n| `fair` | Fair. |\n| `poor` | Poor. |\n| `failing` | Failing. |\n| `unknown` | Unknown. |"
          },
          "requires": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__BanSafeRequiredFinding"
            },
            "maxItems": 25,
            "description": "Findings that must resolve before this restriction lifts.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `25` items |"
          },
          "throughputPerMinute": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 10000,
            "description": "Messages per minute allowed while paced, or null when not paced.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` through `10000` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `10000` (inclusive) |",
            "example": 6
          },
          "eligibleLiftAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Earliest instant the restriction can step down, ISO 8601.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |",
            "example": "2026-09-08T14:00:00.000Z"
          },
          "liftRequires": {
            "type": "string",
            "minLength": 1,
            "maxLength": 240,
            "description": "One sentence describing what lifts the restriction.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `240` characters |",
            "example": "Resolve the two open checks and keep them clean for six evaluations."
          },
          "appealUrl": {
            "type": "string",
            "maxLength": 500,
            "format": "uri",
            "description": "Where to appeal this action.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `500` characters |\n| Format | `uri` |",
            "example": "https://app.polymorfa.com/safety/appeal"
          },
          "startedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this restriction took effect.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |",
            "example": "2026-09-06T14:00:00.000Z"
          },
          "docs": {
            "type": "string",
            "maxLength": 500,
            "format": "uri",
            "description": "Documentation for this restriction.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `500` characters |\n| Format | `uri` |",
            "example": "https://docs.polymorfa.com/safety/restrictions"
          }
        },
        "required": [
          "phoneNumber",
          "action",
          "scope",
          "rung",
          "previousRung",
          "reason",
          "health",
          "healthBand",
          "requires",
          "throughputPerMinute",
          "eligibleLiftAt",
          "liftRequires",
          "appealUrl",
          "startedAt",
          "docs"
        ],
        "additionalProperties": false
      },
      "messaging__BanSafeActionEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "bansafe.action"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `bansafe.action` | Bansafe.action. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__BanSafeActionPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ],
        "additionalProperties": false
      },
      "messaging__BanSafeHealthThresholdPayload": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string",
            "format": "uuid",
            "description": "Session whose present Health crossed the project threshold.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Project whose Health rule produced this action.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "health": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "description": "Present Health; higher is healthier.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `100` (inclusive) |"
          },
          "threshold": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100,
            "description": "Configured project threshold crossed by this evaluation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `100` (inclusive) |"
          },
          "healthSource": {
            "type": "string",
            "enum": [
              "rules_v1",
              "ml_model"
            ],
            "description": "Estimator family used by the evaluation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `rules_v1` | Rules v1. |\n| `ml_model` | Ml model. |"
          },
          "estimatorVersion": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Estimator version used by the evaluation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          },
          "modelVersion": {
            "type": [
              "string",
              "null"
            ],
            "minLength": 1,
            "maxLength": 128,
            "description": "Learned-model version, or null for a rules-based estimate.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: `1` through `128` characters |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          },
          "evaluatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Evaluation time in ISO 8601 format.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "policyVersion": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991,
            "description": "Project Health rule version evaluated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `9007199254740991` (inclusive) |"
          },
          "episodeId": {
            "type": "string",
            "format": "uuid",
            "description": "Stable below-threshold episode identifier.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "actionId": {
            "type": "string",
            "format": "uuid",
            "description": "Stable event identity used for retries.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        },
        "required": [
          "sessionId",
          "projectId",
          "health",
          "threshold",
          "healthSource",
          "estimatorVersion",
          "modelVersion",
          "evaluatedAt",
          "policyVersion",
          "episodeId",
          "actionId"
        ],
        "additionalProperties": false
      },
      "messaging__BanSafeHealthThresholdEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "bansafe.health_threshold"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `bansafe.health_threshold` | Bansafe.health threshold. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__BanSafeHealthThresholdPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ],
        "additionalProperties": false
      },
      "messaging__BanSafeIncidentPayload": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Incident id. Stable, quotable, and the subject of a Ban Insurance claim.",
            "example": "01936b2e-5f2a-7c1d-9a3e-8b4c2d1e0f11"
          },
          "phoneNumber": {
            "type": "string",
            "pattern": "^\\+[1-9]\\d{1,14}$",
            "description": "The customer's own number in E.164 format.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\+[1-9]\\d{1,14}$` |",
            "example": "+15551234567"
          },
          "kind": {
            "type": "string",
            "enum": [
              "cap_warning",
              "cap_reached",
              "timelock",
              "temporary_ban",
              "permanent_ban",
              "connect_blocked",
              "customer_report"
            ],
            "description": "What WhatsApp did, or customer_report when you reported it.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `cap_warning` | Cap warning. |\n| `cap_reached` | Cap reached. |\n| `timelock` | Timelock. |\n| `temporary_ban` | Temporary ban. |\n| `permanent_ban` | Permanent ban. |\n| `connect_blocked` | Connect blocked. |\n| `customer_report` | Customer report. |"
          },
          "source": {
            "type": "string",
            "enum": [
              "runtime",
              "customer"
            ],
            "description": "Whether Polymorfa observed it or you reported it.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `runtime` | Runtime. |\n| `customer` | Customer. |"
          },
          "startedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when the restriction started.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |",
            "example": "2026-09-06T14:03:12.000Z"
          },
          "endsAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "ISO 8601 timestamp when the restriction ends, or null when it has no end. A ban you report ends 24 hours after the time you give unless you report it again or Polymorfa observes the restriction itself.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |",
            "example": "2026-09-07T14:03:12.000Z"
          },
          "belief": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "description": "How confident Polymorfa is that this restriction was real, from 0 to 1. A restriction WhatsApp announced is 1. A ban you report starts at 0.9 and moves once the number's own sending shows whether it was restricted.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |",
            "example": 1
          },
          "resolution": {
            "type": "string",
            "enum": [
              "open",
              "corroborated",
              "contradicted",
              "phone_switch",
              "final"
            ],
            "description": "How the incident settled. open: still being decided. corroborated: a report and an observed restriction agree. contradicted: the number kept sending, so there was no restriction. phone_switch: the number moved to another phone. final: settled with the confidence shown.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `open` | Open. |\n| `corroborated` | Corroborated. |\n| `contradicted` | Contradicted. |\n| `phone_switch` | Phone switch. |\n| `final` | Final. |"
          },
          "claimId": {
            "type": [
              "string",
              "null"
            ],
            "description": "The Ban Insurance claim this incident belongs to, or null when there is none.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |",
            "example": null
          },
          "closedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "ISO 8601 timestamp when you closed or retracted the report, or null.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |",
            "example": null
          }
        },
        "required": [
          "id",
          "phoneNumber",
          "kind",
          "source",
          "startedAt",
          "endsAt",
          "belief",
          "resolution",
          "claimId",
          "closedAt"
        ],
        "additionalProperties": false
      },
      "messaging__BanSafeIncidentEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "bansafe.incident"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `bansafe.incident` | Bansafe.incident. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__BanSafeIncidentPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ],
        "additionalProperties": false
      },
      "messaging__BanSafeClaimPayload": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Claim id. Stable and quotable.",
            "example": "01936b2e-5f2a-7c1d-9a3e-8b4c2d1e0f22"
          },
          "incidentId": {
            "type": "string",
            "description": "The incident this claim was filed against.",
            "example": "01936b2e-5f2a-7c1d-9a3e-8b4c2d1e0f11"
          },
          "phoneNumber": {
            "type": "string",
            "pattern": "^\\+[1-9]\\d{1,14}$",
            "description": "The customer's own number in E.164 format.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\+[1-9]\\d{1,14}$` |",
            "example": "+15551234567"
          },
          "status": {
            "type": "string",
            "enum": [
              "filed",
              "under_review",
              "approved",
              "denied",
              "paid",
              "reversed"
            ],
            "description": "Where the claim sits. filed and under_review are open. approved means it was accepted, and with a zero amount that there was nothing to return. paid means the credits are on your balance. reversed means what Polymorfa knew about the ban changed afterwards and the credits were taken back.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `filed` | Filed. |\n| `under_review` | Under review. |\n| `approved` | Approved. |\n| `denied` | Denied. |\n| `paid` | Paid. |\n| `reversed` | Reversed. |"
          },
          "verdict": {
            "type": "string",
            "enum": [
              "other_device",
              "customer_conduct",
              "shared_network",
              "ours",
              "inconclusive"
            ],
            "description": "What the ban was attributed to. other_device: another device on the account was sending. customer_conduct: Polymorfa was already restricting this number, or named the same serious problem for a week. shared_network: the number shared its connection with numbers that were being restricted. ours: nothing points at how the number was used. inconclusive: Polymorfa could not see enough of the window to say.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `other_device` | Other device. |\n| `customer_conduct` | Customer conduct. |\n| `shared_network` | Shared network. |\n| `ours` | Ours. |\n| `inconclusive` | Inconclusive. |"
          },
          "windowStart": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 start of the 30 days the refund covers.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |",
            "example": "2026-08-07T14:03:12.000Z"
          },
          "windowEnd": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 end of the window: the moment the ban started.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |",
            "example": "2026-09-06T14:03:12.000Z"
          },
          "measuredCents": {
            "type": "number",
            "description": "Credit quantity this number consumed inside the window, with up to six decimal places.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |\n| Increment | Multiple of `0.000001` |",
            "minimum": 0,
            "multipleOf": 0.000001,
            "example": 1080
          },
          "capCents": {
            "type": "number",
            "description": "Maximum credit quantity this claim can return, with up to six decimal places.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |\n| Increment | Multiple of `0.000001` |",
            "minimum": 0,
            "multipleOf": 0.000001,
            "example": 1080
          },
          "amountCents": {
            "type": "number",
            "description": "Credit quantity this claim returns, with up to six decimal places.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |\n| Increment | Multiple of `0.000001` |",
            "minimum": 0,
            "multipleOf": 0.000001,
            "example": 1080
          },
          "summary": {
            "type": "string",
            "description": "One sentence describing the claim's state."
          },
          "reason": {
            "type": "string",
            "description": "One sentence describing what the ban was attributed to."
          },
          "decidedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "ISO 8601 timestamp of the decision, or null while none was taken.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |",
            "example": null
          },
          "paidAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "ISO 8601 timestamp the credits landed, or null.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |",
            "example": null
          }
        },
        "required": [
          "id",
          "incidentId",
          "phoneNumber",
          "status",
          "verdict",
          "windowStart",
          "windowEnd",
          "measuredCents",
          "capCents",
          "amountCents",
          "summary",
          "reason",
          "decidedAt",
          "paidAt"
        ],
        "additionalProperties": false
      },
      "messaging__BanSafeClaimEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "bansafe.claim"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `bansafe.claim` | Bansafe.claim. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__BanSafeClaimPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ],
        "additionalProperties": false
      },
      "messaging__MessageFailedPayload": {
        "type": "object",
        "properties": {
          "to": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__IdentityRef"
              },
              {
                "description": "Recipient chat the send was attempted to"
              }
            ],
            "description": "Specifies to for this messaging message failed payload."
          },
          "type": {
            "type": "string",
            "description": "Type of the attempted message (text, image, ...)",
            "example": "text"
          },
          "error": {
            "type": "string",
            "enum": [
              "invalid_recipient",
              "session_not_connected",
              "ack_timeout",
              "send_failed",
              "blocked_by_safety"
            ],
            "description": "Sanitized failure class\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `invalid_recipient` | Invalid recipient. |\n| `session_not_connected` | Session not connected. |\n| `ack_timeout` | Ack timeout. |\n| `send_failed` | Send failed. |\n| `blocked_by_safety` | Blocked by safety. |",
            "example": "send_failed"
          },
          "code": {
            "type": "string",
            "description": "Stable machine-readable code from the API error envelope, present for classified safety refusals and an unknown send outcome",
            "example": "bansafe_cold_blocked"
          },
          "retryAfter": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "description": "Whole seconds to wait before retrying a paced send, exhausted allowance, or temporary allowance-accounting pause\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | Greater than `0` |",
            "example": 5
          },
          "timestamp": {
            "type": "integer",
            "minimum": 0,
            "description": "Unix timestamp in seconds when the failure occurred\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |",
            "example": 1757161200
          }
        },
        "required": [
          "to",
          "type",
          "error",
          "timestamp"
        ]
      },
      "messaging__MessageFailedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "message.failed"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `message.failed` | Message.failed. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__MessageFailedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__RuntimeTemplateStatusPayload": {
        "type": "object",
        "properties": {
          "templateName": {
            "type": "string",
            "description": "Template name as registered with Meta",
            "example": "order_update"
          },
          "templateId": {
            "type": "string",
            "description": "Meta template id",
            "example": "1234567890"
          },
          "status": {
            "type": "string",
            "description": "New approval status: APPROVED, REJECTED, PAUSED, DISABLED, DELETED",
            "example": "APPROVED"
          },
          "category": {
            "type": "string",
            "description": "Template category (MARKETING, UTILITY, AUTHENTICATION)",
            "example": "UTILITY"
          },
          "reason": {
            "type": "string",
            "description": "Reason for the status change; empty unless REJECTED, PAUSED or DISABLED",
            "example": ""
          },
          "qualityRating": {
            "type": "string",
            "description": "Quality rating bucket reported by Meta (GREEN, YELLOW, RED)",
            "example": "GREEN"
          }
        },
        "required": [
          "templateName",
          "templateId",
          "status",
          "category",
          "reason",
          "qualityRating"
        ]
      },
      "messaging__CloudTemplateStatusPayload": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "message_template_status_update",
              "message_template_quality_update"
            ],
            "description": "`message_template_status_update` for an approval change, `message_template_quality_update` for a quality change\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `message_template_status_update` | Message template status update. |\n| `message_template_quality_update` | Message template quality update. |"
          },
          "event": {
            "type": "string",
            "description": "New template status reported by WhatsApp; for a quality change, the new quality score",
            "example": "APPROVED"
          },
          "templateId": {
            "type": "string",
            "description": "WhatsApp template id",
            "example": "1234567890"
          },
          "templateName": {
            "type": "string",
            "description": "Template name",
            "example": "order_update"
          },
          "language": {
            "type": "string",
            "description": "Template language code",
            "example": "en_US"
          },
          "reason": {
            "type": "string",
            "description": "WhatsApp's explanation for the change, when supplied",
            "example": "NONE"
          },
          "previousQualityScore": {
            "type": "string",
            "description": "Quality score before a quality change",
            "example": "GREEN"
          },
          "newQualityScore": {
            "type": "string",
            "description": "Quality score after a quality change",
            "example": "YELLOW"
          },
          "wabaId": {
            "type": "string",
            "description": "WhatsApp Business Account id that owns the template",
            "example": "102290129340398"
          }
        },
        "required": [
          "kind"
        ]
      },
      "messaging__TemplateStatusPayload": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/messaging__RuntimeTemplateStatusPayload"
          },
          {
            "$ref": "#/components/schemas/messaging__CloudTemplateStatusPayload"
          }
        ]
      },
      "messaging__TemplateStatusEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "template.status"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `template.status` | Template.status. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__TemplateStatusPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `templateName`, `templateId`, `status`, `category`, `reason`, `qualityRating` |\n| Alternative 2 | Type: `object`; Field `kind`: `message_template_status_update` or `message_template_quality_update`; Required fields: `kind` |"
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CampaignPausedPayload": {
        "type": "object",
        "properties": {
          "campaignId": {
            "type": "string",
            "description": "Campaign id",
            "example": "01936b2e-5f2a-7c1d-9a3e-8b4c2d1e0f11"
          },
          "sentCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Recipients sent so far\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "remainingCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Recipients still queued\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "pausedAt": {
            "type": "integer",
            "minimum": 0,
            "description": "Unix timestamp in seconds when the campaign paused\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |",
            "example": 1757161200
          },
          "reason": {
            "type": "string",
            "description": "Why Polymorfa paused the campaign. Present only on an automatic pause.",
            "example": "WhatsApp lowered the messaging limit of a number this campaign sends from."
          },
          "code": {
            "type": "string",
            "description": "Stable code for an automatic pause: campaigns_not_entitled, bansafe_org_suspended, bansafe_suspended, campaign_throughput_capped, invalid_parameter, hybrid_campaign_unsupported, blocked_by_safety, number_quality_dropped, or messaging_limit_dropped. Present only on an automatic pause.",
            "example": "messaging_limit_dropped"
          }
        },
        "required": [
          "campaignId",
          "sentCount",
          "remainingCount",
          "pausedAt"
        ]
      },
      "messaging__CampaignPausedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "campaign.paused"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `campaign.paused` | Campaign.paused. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignPausedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CampaignLaunchedPayload": {
        "type": "object",
        "properties": {
          "campaignId": {
            "type": "string",
            "description": "Campaign id",
            "example": "01936b2e-5f2a-7c1d-9a3e-8b4c2d1e0f11"
          },
          "name": {
            "type": "string",
            "description": "Human-readable name for this resource."
          },
          "recipientCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of recipients.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "scheduled": {
            "type": "boolean",
            "description": "Whether scheduled."
          },
          "launchedAt": {
            "type": "integer",
            "minimum": 0,
            "description": "Unix timestamp in milliseconds when sending began\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "campaignId",
          "name",
          "recipientCount",
          "scheduled",
          "launchedAt"
        ]
      },
      "messaging__CampaignLaunchedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "campaign.launched"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `campaign.launched` | Campaign.launched. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignLaunchedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CampaignResumedPayload": {
        "type": "object",
        "properties": {
          "campaignId": {
            "type": "string",
            "description": "Campaign id",
            "example": "01936b2e-5f2a-7c1d-9a3e-8b4c2d1e0f11"
          },
          "sentCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of sents.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "remainingCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of remainings.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "resumedAt": {
            "type": "integer",
            "minimum": 0,
            "description": "Unix timestamp in milliseconds when sending resumed\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "campaignId",
          "sentCount",
          "remainingCount",
          "resumedAt"
        ]
      },
      "messaging__CampaignResumedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "campaign.resumed"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `campaign.resumed` | Campaign.resumed. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignResumedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CampaignStoppedPayload": {
        "type": "object",
        "properties": {
          "campaignId": {
            "type": "string",
            "description": "Campaign id",
            "example": "01936b2e-5f2a-7c1d-9a3e-8b4c2d1e0f11"
          },
          "sentCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of sents.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "abandonedCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of abandoneds.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "stoppedAt": {
            "type": "integer",
            "minimum": 0,
            "description": "Unix timestamp in milliseconds when the stop settled\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "campaignId",
          "sentCount",
          "abandonedCount",
          "stoppedAt"
        ]
      },
      "messaging__CampaignStoppedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "campaign.stopped"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `campaign.stopped` | Campaign.stopped. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignStoppedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CampaignRescheduledPayload": {
        "type": "object",
        "properties": {
          "campaignId": {
            "type": "string",
            "description": "Campaign id",
            "example": "01936b2e-5f2a-7c1d-9a3e-8b4c2d1e0f11"
          },
          "previousScheduledAt": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "description": "The start time that was replaced, in Unix milliseconds\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "scheduledAt": {
            "type": "integer",
            "minimum": 0,
            "description": "The new start time in Unix milliseconds. Equal to `rescheduledAt` when the campaign was asked to start now.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "rescheduledAt": {
            "type": "integer",
            "minimum": 0,
            "description": "Unix timestamp in milliseconds when the new start time was accepted\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "campaignId",
          "previousScheduledAt",
          "scheduledAt",
          "rescheduledAt"
        ]
      },
      "messaging__CampaignRescheduledEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "campaign.rescheduled"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `campaign.rescheduled` | Campaign.rescheduled. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignRescheduledPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CampaignCompletedPayload": {
        "type": "object",
        "properties": {
          "campaignId": {
            "type": "string",
            "description": "Campaign id",
            "example": "01936b2e-5f2a-7c1d-9a3e-8b4c2d1e0f11"
          },
          "sentCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of sents.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "deliveredCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of delivereds.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "readCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of reads.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "failedCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of faileds.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "skippedCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of skippeds.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "responseCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of responses.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "completedAt": {
            "type": "integer",
            "minimum": 0,
            "description": "Unix timestamp in seconds when the last recipient settled\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |",
            "example": 1757161200
          },
          "durationMs": {
            "type": "integer",
            "minimum": 0,
            "description": "Wall-clock duration from launch to completion, in milliseconds\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "campaignId",
          "sentCount",
          "deliveredCount",
          "readCount",
          "failedCount",
          "skippedCount",
          "responseCount",
          "completedAt",
          "durationMs"
        ]
      },
      "messaging__CampaignCompletedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "campaign.completed"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `campaign.completed` | Campaign.completed. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignCompletedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CampaignFailedPayload": {
        "type": "object",
        "properties": {
          "campaignId": {
            "type": "string",
            "description": "Campaign id",
            "example": "01936b2e-5f2a-7c1d-9a3e-8b4c2d1e0f11"
          },
          "reason": {
            "type": "string",
            "description": "Stable reason the campaign failed",
            "example": "all_recipients_failed"
          },
          "failedAt": {
            "type": "integer",
            "minimum": 0,
            "description": "Unix timestamp in seconds when the campaign failed\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |",
            "example": 1757161200
          }
        },
        "required": [
          "campaignId",
          "reason",
          "failedAt"
        ]
      },
      "messaging__CampaignFailedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "campaign.failed"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `campaign.failed` | Campaign.failed. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignFailedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CampaignRecipientSentPayload": {
        "type": "object",
        "properties": {
          "campaignId": {
            "type": "string",
            "description": "Campaign id",
            "example": "01936b2e-5f2a-7c1d-9a3e-8b4c2d1e0f11"
          },
          "recipientId": {
            "type": "string",
            "description": "Campaign recipient id",
            "example": "01936b2e-6a11-7d2e-8f4a-1c2b3d4e5f66"
          },
          "phone": {
            "type": "string",
            "description": "Recipient phone number in E.164",
            "example": "+14155550123"
          },
          "sessionKey": {
            "type": "string",
            "description": "Sending number's session key",
            "example": "sales-1"
          },
          "externalMessageId": {
            "type": "string",
            "description": "WhatsApp message id of the delivered send",
            "example": "3EB0A1B2C3D4E5F60718"
          },
          "variantKey": {
            "type": "string",
            "description": "Content variant used for this recipient",
            "example": "v1"
          },
          "attempt": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "description": "Attempt number that succeeded\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | Greater than `0` |",
            "example": 1
          },
          "messageIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "Position of this message in the campaign's message sequence, from 0. One event is sent per message; 0 is the recipient's first message. Absent on events produced before sequences, which always mean 0.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |",
            "example": 0
          }
        },
        "required": [
          "campaignId",
          "recipientId",
          "phone",
          "sessionKey",
          "externalMessageId",
          "variantKey",
          "attempt"
        ]
      },
      "messaging__CampaignRecipientSentEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "campaign.recipient_sent"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `campaign.recipient_sent` | Campaign.recipient sent. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignRecipientSentPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CampaignRecipientDeliveredPayload": {
        "type": "object",
        "properties": {
          "campaignId": {
            "type": "string",
            "description": "Campaign id",
            "example": "01936b2e-5f2a-7c1d-9a3e-8b4c2d1e0f11"
          },
          "recipientId": {
            "type": "string",
            "description": "Campaign recipient id",
            "example": "01936b2e-6a11-7d2e-8f4a-1c2b3d4e5f66"
          },
          "phone": {
            "type": "string",
            "description": "Recipient phone number in E.164",
            "example": "+14155550123"
          },
          "sessionKey": {
            "type": "string",
            "description": "Sending number's session key",
            "example": "sales-1"
          },
          "externalMessageId": {
            "type": "string",
            "minLength": 1,
            "description": "WhatsApp message id of the campaign send\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          },
          "deliveredAt": {
            "type": "integer",
            "minimum": 0,
            "description": "Unix timestamp in seconds of the first delivery receipt\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |",
            "example": 1757161200
          }
        },
        "required": [
          "campaignId",
          "recipientId",
          "phone",
          "sessionKey",
          "externalMessageId",
          "deliveredAt"
        ]
      },
      "messaging__CampaignRecipientDeliveredEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "campaign.recipient_delivered"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `campaign.recipient_delivered` | Campaign.recipient delivered. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignRecipientDeliveredPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CampaignRecipientReadPayload": {
        "type": "object",
        "properties": {
          "campaignId": {
            "type": "string",
            "description": "Campaign id",
            "example": "01936b2e-5f2a-7c1d-9a3e-8b4c2d1e0f11"
          },
          "recipientId": {
            "type": "string",
            "description": "Campaign recipient id",
            "example": "01936b2e-6a11-7d2e-8f4a-1c2b3d4e5f66"
          },
          "phone": {
            "type": "string",
            "description": "Recipient phone number in E.164",
            "example": "+14155550123"
          },
          "sessionKey": {
            "type": "string",
            "description": "Sending number's session key",
            "example": "sales-1"
          },
          "externalMessageId": {
            "type": "string",
            "minLength": 1,
            "description": "WhatsApp message id of the campaign send\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          },
          "readAt": {
            "type": "integer",
            "minimum": 0,
            "description": "Unix timestamp in seconds of the first read receipt\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |",
            "example": 1757161200
          }
        },
        "required": [
          "campaignId",
          "recipientId",
          "phone",
          "sessionKey",
          "externalMessageId",
          "readAt"
        ]
      },
      "messaging__CampaignRecipientReadEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "campaign.recipient_read"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `campaign.recipient_read` | Campaign.recipient read. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignRecipientReadPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CampaignRecipientRepliedPayload": {
        "type": "object",
        "properties": {
          "campaignId": {
            "type": "string",
            "description": "Campaign id",
            "example": "01936b2e-5f2a-7c1d-9a3e-8b4c2d1e0f11"
          },
          "recipientId": {
            "type": "string",
            "description": "Campaign recipient id",
            "example": "01936b2e-6a11-7d2e-8f4a-1c2b3d4e5f66"
          },
          "phone": {
            "type": "string",
            "description": "Recipient phone number in E.164",
            "example": "+14155550123"
          },
          "sessionKey": {
            "type": "string",
            "description": "Sending number's session key",
            "example": "sales-1"
          },
          "externalMessageId": {
            "type": [
              "string",
              "null"
            ],
            "minLength": 1,
            "description": "WhatsApp message id of the campaign send, or null when unavailable\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: At least `1` characters |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          },
          "repliedAt": {
            "type": "integer",
            "minimum": 0,
            "description": "Unix timestamp in seconds of the first attributed reply\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |",
            "example": 1757161200
          },
          "responseMs": {
            "type": "integer",
            "minimum": 0,
            "description": "Milliseconds from send to first reply\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "campaignId",
          "recipientId",
          "phone",
          "sessionKey",
          "externalMessageId",
          "repliedAt",
          "responseMs"
        ]
      },
      "messaging__CampaignRecipientRepliedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "campaign.recipient_replied"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `campaign.recipient_replied` | Campaign.recipient replied. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignRecipientRepliedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CampaignRecipientLinkOpenedPayload": {
        "type": "object",
        "properties": {
          "campaignId": {
            "type": "string",
            "description": "Campaign id",
            "example": "01936b2e-5f2a-7c1d-9a3e-8b4c2d1e0f11"
          },
          "recipientId": {
            "type": "string",
            "description": "Campaign recipient id",
            "example": "01936b2e-6a11-7d2e-8f4a-1c2b3d4e5f66"
          },
          "linkKey": {
            "type": "string",
            "pattern": "^[a-z0-9_]{1,32}$",
            "description": "Key of the tracked link that was opened\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z0-9_]{1,32}$` |",
            "example": "offer"
          },
          "openedAt": {
            "type": "integer",
            "minimum": 0,
            "description": "Unix timestamp in seconds of the recipient's first open of this link\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |",
            "example": 1757161200
          }
        },
        "required": [
          "campaignId",
          "recipientId",
          "linkKey",
          "openedAt"
        ]
      },
      "messaging__CampaignRecipientLinkOpenedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "campaign.recipient_link_opened"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `campaign.recipient_link_opened` | Campaign.recipient link opened. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignRecipientLinkOpenedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CampaignRecipientFailedPayload": {
        "type": "object",
        "properties": {
          "campaignId": {
            "type": "string",
            "description": "Campaign id",
            "example": "01936b2e-5f2a-7c1d-9a3e-8b4c2d1e0f11"
          },
          "recipientId": {
            "type": "string",
            "description": "Campaign recipient id",
            "example": "01936b2e-6a11-7d2e-8f4a-1c2b3d4e5f66"
          },
          "phone": {
            "type": "string",
            "description": "Recipient phone number in E.164",
            "example": "+14155550123"
          },
          "attempts": {
            "type": "integer",
            "minimum": 0,
            "description": "Attempts made before giving up\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "error": {
            "type": "string",
            "description": "Sanitized failure class or stable code",
            "example": "ack_timeout"
          },
          "failedAt": {
            "type": "integer",
            "minimum": 0,
            "description": "Unix timestamp in seconds when the recipient was marked failed\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |",
            "example": 1757161200
          },
          "messageIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "Position of the failed message in the campaign's message sequence, from 0. Above 0, the earlier messages were sent and the recipient stays sent; its remaining messages are not sent. Absent on events produced before sequences, which always mean 0.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |",
            "example": 0
          }
        },
        "required": [
          "campaignId",
          "recipientId",
          "phone",
          "attempts",
          "error",
          "failedAt"
        ]
      },
      "messaging__CampaignRecipientFailedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "campaign.recipient_failed"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `campaign.recipient_failed` | Campaign.recipient failed. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignRecipientFailedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CampaignRecipientSkippedPayload": {
        "type": "object",
        "properties": {
          "campaignId": {
            "type": "string",
            "description": "Campaign id",
            "example": "01936b2e-5f2a-7c1d-9a3e-8b4c2d1e0f11"
          },
          "recipientId": {
            "type": "string",
            "description": "Campaign recipient id",
            "example": "01936b2e-6a11-7d2e-8f4a-1c2b3d4e5f66"
          },
          "phone": {
            "type": "string",
            "description": "Recipient phone number in E.164",
            "example": "+14155550123"
          },
          "reason": {
            "type": "string",
            "description": "Stable skip reason: optout, frequency_cap_exceeded for a campaign contact cap, or whatsapp_marketing_limit when WhatsApp withheld a marketing message because the person reached their per-user marketing message limit",
            "example": "whatsapp_marketing_limit"
          },
          "messageIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "Position from 0 of a capped sequence message. Above 0, the initial send status is preserved and remaining sequence messages stop.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |",
            "example": 1
          },
          "followUpId": {
            "type": "string",
            "format": "uuid",
            "description": "Receipt-timed follow-up cancelled by the contact frequency cap; the initial send status is preserved.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |",
            "example": "0198a2cb-0000-7000-8000-0000000000f1"
          },
          "skippedAt": {
            "type": "integer",
            "minimum": 0,
            "description": "Unix timestamp in milliseconds when the recipient was skipped\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |",
            "example": 1757161200000
          }
        },
        "required": [
          "campaignId",
          "recipientId",
          "phone",
          "reason",
          "skippedAt"
        ]
      },
      "messaging__CampaignRecipientSkippedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "campaign.recipient_skipped"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `campaign.recipient_skipped` | Campaign.recipient skipped. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignRecipientSkippedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CampaignThrottledPayload": {
        "type": "object",
        "properties": {
          "campaignId": {
            "type": "string",
            "description": "Campaign id",
            "example": "01936b2e-5f2a-7c1d-9a3e-8b4c2d1e0f11"
          },
          "sessionKey": {
            "type": "string",
            "description": "Sending number's session key",
            "example": "sales-1"
          },
          "reason": {
            "type": "string",
            "description": "Why sending was paced: `paced`, `bansafe_throttled`, `daily_allowance_reached`, or `new_chat_limit_reached` (WhatsApp capped this number's new chats for the current cycle)",
            "example": "bansafe_throttled"
          },
          "deferredCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Recipients deferred in this pass\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "at": {
            "type": "integer",
            "minimum": 0,
            "description": "Unix timestamp in seconds of the pacing decision\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |",
            "example": 1757161200
          }
        },
        "required": [
          "campaignId",
          "sessionKey",
          "reason",
          "deferredCount",
          "at"
        ]
      },
      "messaging__CampaignThrottledEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "campaign.throttled"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `campaign.throttled` | Campaign.throttled. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignThrottledPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CampaignCapReachedPayload": {
        "type": "object",
        "properties": {
          "campaignId": {
            "type": "string",
            "description": "Campaign id",
            "example": "01936b2e-5f2a-7c1d-9a3e-8b4c2d1e0f11"
          },
          "sessionKey": {
            "type": "string",
            "description": "Sending number's session key",
            "example": "sales-1"
          },
          "phone": {
            "type": "string",
            "description": "Sending number in E.164",
            "example": "+14155550100"
          },
          "capType": {
            "type": "string",
            "description": "Which cap was reached: `hourly` or `daily` (the campaign's own caps), or `new_chat` (WhatsApp's per-number new-chat cap)",
            "example": "daily"
          },
          "capLimit": {
            "type": "integer",
            "minimum": 0,
            "description": "The cap that was reached. For `new_chat`, the quota WhatsApp reported\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "windowResetsAt": {
            "type": "integer",
            "minimum": 0,
            "description": "Unix timestamp in seconds when the cap window resets. For `new_chat`, the end of WhatsApp's cycle, or of Polymorfa's one-hour hold when WhatsApp rejected a new chat without reporting a cycle\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |",
            "example": 1757161200
          },
          "at": {
            "type": "integer",
            "minimum": 0,
            "description": "Unix timestamp in seconds of the decision\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |",
            "example": 1757161200
          }
        },
        "required": [
          "campaignId",
          "sessionKey",
          "phone",
          "capType",
          "capLimit",
          "windowResetsAt",
          "at"
        ]
      },
      "messaging__CampaignCapReachedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "campaign.cap_reached"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `campaign.cap_reached` | Campaign.cap reached. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignCapReachedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__CampaignColdBlockedPayload": {
        "type": "object",
        "properties": {
          "campaignId": {
            "type": "string",
            "description": "Campaign id",
            "example": "01936b2e-5f2a-7c1d-9a3e-8b4c2d1e0f11"
          },
          "recipientId": {
            "type": "string",
            "description": "Campaign recipient id",
            "example": "01936b2e-6a11-7d2e-8f4a-1c2b3d4e5f66"
          },
          "phone": {
            "type": "string",
            "description": "Recipient phone number in E.164",
            "example": "+14155550123"
          },
          "surface": {
            "type": "string",
            "description": "Campaign surface",
            "example": "whatsapp"
          },
          "reason": {
            "type": "string",
            "description": "Stable hold reason",
            "example": "bansafe_cold_held"
          },
          "at": {
            "type": "integer",
            "minimum": 0,
            "description": "Unix timestamp in seconds when the recipient was held\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |",
            "example": 1757161200
          }
        },
        "required": [
          "campaignId",
          "recipientId",
          "phone",
          "surface",
          "reason",
          "at"
        ]
      },
      "messaging__CampaignColdBlockedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique event identifier"
          },
          "session": {
            "type": "string",
            "description": "Session that produced this event"
          },
          "externalId": {
            "type": "string",
            "description": "Integrator reference from the QuickLink that created this session. Included on session lifecycle events when supplied."
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 timestamp"
          },
          "event": {
            "type": "string",
            "enum": [
              "campaign.cold_blocked"
            ],
            "description": "Event type\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `campaign.cold_blocked` | Campaign.cold blocked. |"
          },
          "payload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignColdBlockedPayload"
              }
            ],
            "description": "Structured payload carried by this event or operation."
          }
        },
        "required": [
          "id",
          "session",
          "timestamp",
          "event",
          "payload"
        ]
      },
      "messaging__PingResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "example": "ok",
            "description": "Current status of this resource or operation."
          }
        },
        "required": [
          "status"
        ]
      },
      "messaging__HealthCheck": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "example": "healthy",
            "description": "Current status of this resource or operation."
          },
          "error": {
            "type": "string",
            "description": "Error details returned when the operation fails."
          }
        },
        "required": [
          "status"
        ]
      },
      "messaging__HealthResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "example": "healthy",
            "description": "Current status of this resource or operation."
          },
          "checks": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/messaging__HealthCheck"
            },
            "description": "Structured checks values for this messaging health response."
          }
        },
        "required": [
          "status",
          "checks"
        ]
      },
      "messaging__VersionResponse": {
        "type": "object",
        "properties": {
          "version": {
            "type": "string",
            "description": "Specifies version for this messaging version response."
          },
          "buildTime": {
            "type": "string",
            "description": "ISO 8601 timestamp when this API build was produced."
          },
          "env": {
            "type": "string",
            "description": "Specifies env for this messaging version response."
          },
          "apiVersion": {
            "type": "string",
            "description": "Specifies api version for this messaging version response."
          },
          "minSupportedVersion": {
            "type": "string",
            "description": "Specifies min supported version for this messaging version response."
          }
        },
        "required": [
          "version",
          "buildTime",
          "env",
          "apiVersion",
          "minSupportedVersion"
        ]
      },
      "messaging__StatusResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "Current status of this resource or operation."
          },
          "uptime": {
            "type": "string",
            "description": "Specifies uptime for this messaging status response."
          },
          "version": {
            "type": "string",
            "description": "Specifies version for this messaging status response."
          },
          "env": {
            "type": "string",
            "description": "Specifies env for this messaging status response."
          }
        },
        "required": [
          "status",
          "uptime",
          "version",
          "env"
        ]
      },
      "messaging__SuccessResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether the request succeeded."
          },
          "message": {
            "type": "string",
            "description": "Human-readable message associated with this result."
          }
        },
        "required": [
          "success"
        ]
      },
      "messaging__QRResponse": {
        "type": "object",
        "properties": {
          "qr": {
            "type": "string",
            "description": "QR code data to encode into a scannable image"
          },
          "event": {
            "type": "string",
            "description": "QR channel event (e.g. success, timeout)"
          }
        }
      },
      "messaging__GetQRCodeResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__QRResponse"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__PairCodeResponse": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Numeric pairing code for device linking"
          }
        },
        "required": [
          "code"
        ]
      },
      "messaging__RequestPairCodeResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__PairCodeResponse"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__PairCodeRequest": {
        "type": "object",
        "properties": {
          "phone": {
            "type": "string",
            "minLength": 1,
            "description": "Phone number in international format.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          }
        },
        "required": [
          "phone"
        ]
      },
      "messaging__PublicError": {
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "invalid_request_error",
                  "authentication_error",
                  "permission_error",
                  "conflict_error",
                  "rate_limit_error",
                  "api_error",
                  "upstream_error"
                ],
                "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `invalid_request_error` | Invalid request error. |\n| `authentication_error` | Authentication error. |\n| `permission_error` | Permission error. |\n| `conflict_error` | Conflict error. |\n| `rate_limit_error` | Rate limit error. |\n| `api_error` | Api error. |\n| `upstream_error` | Upstream error. |"
              },
              "code": {
                "type": "string",
                "enum": [
                  "invalid_parameter",
                  "invalid_credential",
                  "entitlement_required",
                  "gate_limit_reached",
                  "method_not_allowed",
                  "permission_denied",
                  "missing_scope",
                  "resource_not_found",
                  "hms_not_enabled",
                  "media_fetch_failed",
                  "resource_gone",
                  "feature_unavailable",
                  "stream_cursor_invalid",
                  "stream_cursor_expired",
                  "stream_connection_limit_reached",
                  "state_conflict",
                  "team_deletion_scheduled",
                  "hybrid_choice_required",
                  "hybrid_group_linked_devices_unavailable",
                  "idempotency_conflict",
                  "idempotency_in_progress",
                  "idempotency_completed",
                  "idempotency_outcome_unknown",
                  "call_claimed",
                  "call_not_ringing",
                  "connection_limit",
                  "unsupported_for_connection",
                  "call_permission_required",
                  "invalid_sip_trunk",
                  "calls_disabled",
                  "call_recipient_opted_out",
                  "call_destination_blocked",
                  "call_permission_request_limited",
                  "call_permission_granted",
                  "call_opt_out_limit",
                  "number_restricted",
                  "sip_trunk_in_use",
                  "sip_trunk_revision_conflict",
                  "sip_trunk_limit",
                  "sip_unavailable",
                  "voice_not_enabled",
                  "provider_credential_invalid",
                  "provider_unavailable",
                  "asset_not_ready",
                  "voice_asset_in_use",
                  "voice_asset_revision_conflict",
                  "voice_unavailable",
                  "rate_limit_exceeded",
                  "internal_error",
                  "operation_not_supported",
                  "upstream_failure",
                  "service_unavailable",
                  "credential_verification_unavailable",
                  "session_not_ready",
                  "command_dispatch_failed",
                  "result_unknown",
                  "parent_bsuid_not_supported",
                  "recipient_not_on_whatsapp",
                  "conversation_window_closed",
                  "template_not_approved",
                  "media_too_large",
                  "whatsapp_rate_limited",
                  "new_chat_limit_reached",
                  "marketing_disabled_on_cloud_api",
                  "whatsapp_account_restricted",
                  "whatsapp_authorization_required",
                  "whatsapp_payment_method_required",
                  "whatsapp_number_not_registered",
                  "bansafe_suspended",
                  "bansafe_org_suspended",
                  "bansafe_cold_blocked",
                  "bansafe_cold_held",
                  "bansafe_throttled",
                  "bansafe_daily_allowance_reached",
                  "bansafe_accounting_unavailable",
                  "bansafe_send_outcome_unknown",
                  "campaigns_not_entitled",
                  "campaign_throughput_capped",
                  "campaign_approval_required",
                  "campaign_approval_stale",
                  "campaign_variables_missing"
                ],
                "description": "Stable machine-readable code for this result.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `invalid_parameter` | Invalid parameter. |\n| `invalid_credential` | Invalid credential. |\n| `entitlement_required` | Entitlement required. |\n| `gate_limit_reached` | Gate limit reached. |\n| `method_not_allowed` | Method not allowed. |\n| `permission_denied` | Permission denied. |\n| `missing_scope` | Missing scope. |\n| `resource_not_found` | Resource not found. |\n| `hms_not_enabled` | Hms not enabled. |\n| `media_fetch_failed` | Media fetch failed. |\n| `resource_gone` | Resource gone. |\n| `feature_unavailable` | Feature unavailable. |\n| `stream_cursor_invalid` | Stream cursor invalid. |\n| `stream_cursor_expired` | Stream cursor expired. |\n| `stream_connection_limit_reached` | Stream connection limit reached. |\n| `state_conflict` | State conflict. |\n| `team_deletion_scheduled` | Team deletion scheduled. |\n| `hybrid_choice_required` | Hybrid choice required. |\n| `hybrid_group_linked_devices_unavailable` | Hybrid group linked devices unavailable. |\n| `idempotency_conflict` | Idempotency conflict. |\n| `idempotency_in_progress` | Idempotency in progress. |\n| `idempotency_completed` | Idempotency completed. |\n| `idempotency_outcome_unknown` | Idempotency outcome unknown. |\n| `call_claimed` | Call claimed. |\n| `call_not_ringing` | Call not ringing. |\n| `connection_limit` | Connection limit. |\n| `unsupported_for_connection` | Unsupported for connection. |\n| `call_permission_required` | Call permission required. |\n| `invalid_sip_trunk` | Invalid sip trunk. |\n| `calls_disabled` | Calls disabled. |\n| `call_recipient_opted_out` | Call recipient opted out. |\n| `call_destination_blocked` | Call destination blocked. |\n| `call_permission_request_limited` | Call permission request limited. |\n| `call_permission_granted` | Call permission granted. |\n| `call_opt_out_limit` | Call opt out limit. |\n| `number_restricted` | Number restricted. |\n| `sip_trunk_in_use` | Sip trunk in use. |\n| `sip_trunk_revision_conflict` | Sip trunk revision conflict. |\n| `sip_trunk_limit` | Sip trunk limit. |\n| `sip_unavailable` | Sip unavailable. |\n| `voice_not_enabled` | Voice not enabled. |\n| `provider_credential_invalid` | Provider credential invalid. |\n| `provider_unavailable` | Provider unavailable. |\n| `asset_not_ready` | Asset not ready. |\n| `voice_asset_in_use` | Voice asset in use. |\n| `voice_asset_revision_conflict` | Voice asset revision conflict. |\n| `voice_unavailable` | Voice unavailable. |\n| `rate_limit_exceeded` | Rate limit exceeded. |\n| `internal_error` | Internal error. |\n| `operation_not_supported` | Operation not supported. |\n| `upstream_failure` | Upstream failure. |\n| `service_unavailable` | Service unavailable. |\n| `credential_verification_unavailable` | Credential verification unavailable. |\n| `session_not_ready` | Session not ready. |\n| `command_dispatch_failed` | Command dispatch failed. |\n| `result_unknown` | Result unknown. |\n| `parent_bsuid_not_supported` | Parent bsuid not supported. |\n| `recipient_not_on_whatsapp` | Recipient not on whatsapp. |\n| `conversation_window_closed` | Conversation window closed. |\n| `template_not_approved` | Template not approved. |\n| `media_too_large` | Media too large. |\n| `whatsapp_rate_limited` | Whatsapp rate limited. |\n| `new_chat_limit_reached` | New chat limit reached. |\n| `marketing_disabled_on_cloud_api` | Marketing disabled on cloud api. |\n| `whatsapp_account_restricted` | Whatsapp account restricted. |\n| `whatsapp_authorization_required` | Whatsapp authorization required. |\n| `whatsapp_payment_method_required` | Whatsapp payment method required. |\n| `whatsapp_number_not_registered` | Whatsapp number not registered. |\n| `bansafe_suspended` | Bansafe suspended. |\n| `bansafe_org_suspended` | Bansafe org suspended. |\n| `bansafe_cold_blocked` | Bansafe cold blocked. |\n| `bansafe_cold_held` | Bansafe cold held. |\n| `bansafe_throttled` | Bansafe throttled. |\n| `bansafe_daily_allowance_reached` | Bansafe daily allowance reached. |\n| `bansafe_accounting_unavailable` | Bansafe accounting unavailable. |\n| `bansafe_send_outcome_unknown` | Bansafe send outcome unknown. |\n| `campaigns_not_entitled` | Campaigns not entitled. |\n| `campaign_throughput_capped` | Campaign throughput capped. |\n| `campaign_approval_required` | Campaign approval required. |\n| `campaign_approval_stale` | Campaign approval stale. |\n| `campaign_variables_missing` | Campaign variables missing. |"
              },
              "message": {
                "type": "string",
                "description": "Human-readable message associated with this result."
              },
              "param": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Specifies param for this error.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
              },
              "request_id": {
                "type": "string",
                "description": "Matches the X-Request-Id response header. Include it when you contact support."
              },
              "request_log_url": {
                "type": "string",
                "format": "uri",
                "description": "Console page that shows this request. Returned only to organization and project credentials whose request was logged.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
              }
            },
            "required": [
              "type",
              "code",
              "message",
              "param",
              "request_id"
            ],
            "description": "Error details returned when the operation fails."
          },
          "data": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              null
            ],
            "description": "Always null for a failed request.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "docs": {
            "type": "string",
            "format": "uri",
            "description": "Specifies docs for this messaging public error.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
          }
        },
        "required": [
          "error",
          "data",
          "docs"
        ]
      },
      "messaging__SentMessage": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "whatsapp_ids": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__WhatsAppMessageIds"
              }
            ],
            "description": "Exact observed provider references under linked_devices, official_api, or both. Use the Polymorfa id for message actions.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `linked_devices` |\n| Alternative 2 | Type: `object`; Required fields: `official_api` |"
          },
          "whatsapp_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "Temporary singular provider reference for older consumers. Use whatsapp_ids for transport-specific references.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `512` characters |",
            "deprecated": true
          },
          "conversation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ConversationIdentity"
              },
              {
                "description": "The message's conversation, including its public ID and known aliases."
              }
            ],
            "description": "Public conversation identifier or E.164 phone number."
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp associated with this event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "status": {
            "type": "string",
            "description": "Upstream acceptance status. Delivery and read receipts arrive separately."
          },
          "type": {
            "type": "string",
            "description": "Type discriminator for this object."
          },
          "content": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__MessageContent"
              }
            ],
            "description": "Specifies content for this messaging sent message.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `text` |\n| Alternative 2 | Type: `object`; Required fields: `image` |\n| Alternative 3 | Type: `object`; Required fields: `video` |\n| Alternative 4 | Type: `object`; Required fields: `file` |\n| Alternative 5 | Type: `object`; Required fields: `voice` |\n| Alternative 6 | Type: `object`; Required fields: `location` |\n| Alternative 7 | Type: `object`; Required fields: `poll` |\n| Alternative 8 | Type: `object`; Required fields: `contact` |\n| Alternative 9 | Type: `object`; Required fields: `requestPhoneNumber` |\n| Alternative 10 | Type: `object`; Required fields: `product` |\n| Alternative 11 | Type: `object`; Required fields: `productList` |\n| Alternative 12 | Type: `object`; Required fields: `order` |\n| Alternative 13 | Type: `object`; Required fields: `list` |\n| Alternative 14 | Type: `object`; Required fields: `buttons` |\n| Alternative 15 | Type: `object`; Required fields: `addressMessage` |\n| Alternative 16 | Type: `object`; Required fields: `flow` |\n| Alternative 17 | Type: `object`; Required fields: `callPermissionRequest` |\n| Alternative 18 | Type: `object`; Required fields: `template` |"
          },
          "mediaId": {
            "type": "string",
            "description": "Identifier for the media."
          },
          "hdMessageId": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "ID of the HD half of an image pair, present when `quality: \"hd\"` sent one. `id` is the standard-quality message.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          }
        },
        "required": [
          "id",
          "whatsapp_ids",
          "conversation",
          "timestamp",
          "status",
          "type",
          "content"
        ]
      },
      "messaging__SendMessageResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__SentMessage"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__AsyncAcceptedResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "object",
            "properties": {
              "requestId": {
                "type": "string",
                "format": "uuid",
                "description": "Identifier used to correlate this request across systems.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
              }
            },
            "required": [
              "requestId"
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__ConversationReference": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "phoneNumber": {
            "type": "string",
            "pattern": "^\\+[1-9]\\d{1,14}$",
            "description": "Phone number in international format.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\+[1-9]\\d{1,14}$` |"
          },
          "bsuid": {
            "type": "string",
            "pattern": "^[A-Z]{2}\\.[A-Za-z0-9]{1,128}$",
            "description": "Business-scoped user identifier (BSUID), scoped to the owning business portfolio.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Z]{2}\\.[A-Za-z0-9]{1,128}$` |"
          },
          "username": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "Known username. This field alone does not select a conversation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
          }
        },
        "additionalProperties": false,
        "anyOf": [
          {
            "required": [
              "id"
            ]
          },
          {
            "required": [
              "phoneNumber"
            ]
          },
          {
            "required": [
              "bsuid"
            ]
          }
        ]
      },
      "messaging__QuotedMessage": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "type": {
            "type": "string",
            "description": "Type discriminator for this object."
          },
          "text": {
            "type": "string",
            "description": "Text content carried by this object."
          }
        },
        "required": [
          "id"
        ],
        "description": "Message being replied to."
      },
      "messaging__MessageContent": {
        "description": "Exactly one message kind: text, image, location, or another supported content field.",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "text": {
                "type": "string",
                "minLength": 1,
                "description": "Text to send.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
              }
            },
            "required": [
              "text"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "image": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "URL of the media to send. Specify this or base64.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
                  },
                  "base64": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Base64-encoded media bytes. Specify this or url.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                  },
                  "mimeType": {
                    "type": "string",
                    "description": "MIME type of the media.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Media type | IANA `type/subtype` value matching the payload, such as `image/jpeg`, `image/png`, or `image/webp` |"
                  },
                  "caption": {
                    "type": "string",
                    "description": "Caption sent with the media."
                  },
                  "quality": {
                    "type": "string",
                    "enum": [
                      "standard",
                      "hd"
                    ],
                    "description": "`standard` (default) sends the image once, as supplied. `hd` requests a WhatsApp HD pair: a standard-quality message followed by the original. HD pairs are not sent yet; an `hd` request is sent once, as supplied, and the response has no `hdMessageId`.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `standard` | Standard. |\n| `hd` | Hd. |"
                  }
                },
                "additionalProperties": false,
                "description": "Image attached to or representing this resource."
              }
            },
            "required": [
              "image"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "video": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "URL of the media to send. Specify this or base64.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
                  },
                  "base64": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Base64-encoded media bytes. Specify this or url.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                  },
                  "mimeType": {
                    "type": "string",
                    "description": "MIME type of the media.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Media type | IANA `type/subtype` value matching the payload, such as `video/mp4` or `video/3gpp` |"
                  },
                  "caption": {
                    "type": "string",
                    "description": "Caption sent with the media."
                  },
                  "thumbnail": {
                    "type": "string",
                    "minLength": 4,
                    "maxLength": 21848,
                    "description": "Base64-encoded JPEG preview shown before the media downloads, at most 16 KiB. Linked Devices numbers only.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `4` through `21848` characters |"
                  }
                },
                "additionalProperties": false,
                "description": "Structured video values for this one of."
              }
            },
            "required": [
              "video"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "file": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "URL of the media to send. Specify this or base64.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
                  },
                  "base64": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Base64-encoded media bytes. Specify this or url.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                  },
                  "mimeType": {
                    "type": "string",
                    "description": "MIME type of the media.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Media type | IANA `type/subtype` value matching the payload, such as `application/pdf`, `text/plain`, or `application/vnd.openxmlformats-officedocument.wordprocessingml.document` |"
                  },
                  "caption": {
                    "type": "string",
                    "description": "Caption sent with the media."
                  },
                  "filename": {
                    "type": "string",
                    "description": "Filename presented for the media attachment."
                  },
                  "thumbnail": {
                    "type": "string",
                    "minLength": 4,
                    "maxLength": 21848,
                    "description": "Base64-encoded JPEG preview shown before the media downloads, at most 16 KiB. Linked Devices numbers only.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `4` through `21848` characters |"
                  }
                },
                "additionalProperties": false,
                "description": "Structured file values for this one of."
              }
            },
            "required": [
              "file"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "voice": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "URL of the media to send. Specify this or base64.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
                  },
                  "base64": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Base64-encoded media bytes. Specify this or url.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                  },
                  "mimeType": {
                    "type": "string",
                    "description": "MIME type of the media.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Media type | IANA `type/subtype` value matching the payload, such as `audio/ogg`, `audio/mpeg`, or `audio/aac` |"
                  },
                  "caption": {
                    "type": "string",
                    "description": "Caption sent with the media."
                  },
                  "ptt": {
                    "type": "boolean",
                    "description": "Whether the audio is presented as a push-to-talk voice message."
                  }
                },
                "additionalProperties": false,
                "description": "Voice-message content and metadata."
              }
            },
            "required": [
              "voice"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "location": {
                "type": "object",
                "properties": {
                  "lat": {
                    "type": "number",
                    "minimum": -90,
                    "maximum": 90,
                    "description": "Latitude in decimal degrees.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `-90` through `90` (inclusive) |"
                  },
                  "long": {
                    "type": "number",
                    "minimum": -180,
                    "maximum": 180,
                    "description": "Longitude in decimal degrees.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `-180` through `180` (inclusive) |"
                  },
                  "address": {
                    "type": "string",
                    "description": "Display address for the location."
                  }
                },
                "required": [
                  "lat",
                  "long"
                ],
                "additionalProperties": false,
                "description": "Structured location values for this one of."
              }
            },
            "required": [
              "location"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "poll": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Human-readable title shown to the recipient or operator.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                  },
                  "options": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1
                    },
                    "minItems": 2,
                    "description": "Selectable options carried by this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At least `2` items |\n| Item string length | At least `1` characters |"
                  },
                  "multiSelect": {
                    "type": "boolean",
                    "description": "Whether multi select."
                  }
                },
                "required": [
                  "title",
                  "options"
                ],
                "additionalProperties": false,
                "description": "Structured poll values for this one of."
              }
            },
            "required": [
              "poll"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "contact": {
                "type": "object",
                "properties": {
                  "vcard": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Specifies vcard for this contact.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                  }
                },
                "required": [
                  "vcard"
                ],
                "additionalProperties": false,
                "description": "Structured contact values for this one of."
              }
            },
            "required": [
              "contact"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "requestPhoneNumber": {
                "type": "object",
                "properties": {},
                "additionalProperties": false,
                "description": "Structured request phone number values for this one of."
              }
            },
            "required": [
              "requestPhoneNumber"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "product": {
                "type": "object",
                "properties": {
                  "businessOwnerId": {
                    "type": "string",
                    "pattern": "^[1-9][0-9]{0,18}$",
                    "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
                    "example": "739182640518203"
                  },
                  "id": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Human-readable title shown to the recipient or operator.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                  },
                  "description": {
                    "type": "string",
                    "minLength": 0,
                    "description": "Human-readable description of this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `0` characters |"
                  },
                  "currencyCode": {
                    "type": "string",
                    "pattern": "^[A-Z]{3}$",
                    "description": "ISO 4217 currency code.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Z]{3}$` |"
                  },
                  "priceAmount1000": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991,
                    "description": "Price expressed in thousandths of the declared currency unit.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `9007199254740991` (inclusive) |"
                  },
                  "salePriceAmount1000": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991,
                    "description": "Discounted price expressed in thousandths of the declared currency unit.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `9007199254740991` (inclusive) |"
                  },
                  "retailerId": {
                    "type": "string",
                    "minLength": 0,
                    "description": "Merchant-defined identifier for the catalog item.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `0` characters |"
                  },
                  "url": {
                    "type": "string",
                    "maxLength": 2048,
                    "format": "uri",
                    "description": "URL associated with this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `2048` characters |\n| Format | `uri` |"
                  },
                  "imageCount": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100,
                    "description": "Number of images.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `100` (inclusive) |"
                  },
                  "image": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "maxLength": 4096,
                        "format": "uri",
                        "description": "URL associated with this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `4096` characters |\n| Format | `uri` |"
                      },
                      "base64": {
                        "type": "string",
                        "maxLength": 87384,
                        "description": "Base64-encoded content with no data-URL prefix.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `87384` characters |"
                      },
                      "mimeType": {
                        "type": "string",
                        "minLength": 0,
                        "description": "IANA media type that matches the media payload.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `0` characters |\n| Media type | IANA `type/subtype` value matching the payload, such as `image/jpeg`, `image/png`, or `image/webp` |"
                      }
                    },
                    "description": "Image attached to or representing this resource."
                  },
                  "body": {
                    "type": "string",
                    "minLength": 0,
                    "description": "Primary text content shown to the recipient.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `0` characters |"
                  },
                  "footer": {
                    "type": "string",
                    "minLength": 0,
                    "description": "Supplementary footer text shown below the primary content.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `0` characters |"
                  }
                },
                "required": [
                  "businessOwnerId",
                  "id",
                  "title",
                  "currencyCode",
                  "priceAmount1000"
                ],
                "description": "Structured product values for this one of."
              }
            },
            "required": [
              "product"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "productList": {
                "type": "object",
                "properties": {
                  "businessOwnerId": {
                    "type": "string",
                    "pattern": "^[1-9][0-9]{0,18}$",
                    "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
                    "example": "739182640518203"
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Human-readable title shown to the recipient or operator.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                  },
                  "description": {
                    "type": "string",
                    "minLength": 0,
                    "description": "Human-readable description of this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `0` characters |"
                  },
                  "buttonText": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Text displayed on the action button.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                  },
                  "footer": {
                    "type": "string",
                    "minLength": 0,
                    "description": "Supplementary footer text shown below the primary content.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `0` characters |"
                  },
                  "sections": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "title": {
                          "type": "string",
                          "minLength": 0,
                          "description": "Human-readable title shown to the recipient or operator.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `0` characters |"
                        },
                        "productIds": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "minLength": 1
                          },
                          "minItems": 1,
                          "maxItems": 30,
                          "description": "Identifiers of the products included in this section.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `30` items |\n| Item string length | At least `1` characters |"
                        }
                      },
                      "required": [
                        "productIds"
                      ]
                    },
                    "minItems": 1,
                    "maxItems": 10,
                    "description": "Ordered sections displayed in the interactive message.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `10` items |\n| Total products | At most `30` product IDs across all sections |\n| Product IDs | Every product ID must be unique across all sections |"
                  }
                },
                "required": [
                  "businessOwnerId",
                  "title",
                  "buttonText",
                  "sections"
                ],
                "description": "Structured product list values for this one of."
              }
            },
            "required": [
              "productList"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "order": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                  },
                  "thumbnailBase64": {
                    "type": "string",
                    "maxLength": 87384,
                    "description": "Base64-encoded thumbnail content with no data-URL prefix.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `87384` characters |"
                  },
                  "itemCount": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 100,
                    "description": "Number of items.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `100` (inclusive) |"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "inquiry",
                      "accepted",
                      "declined"
                    ],
                    "description": "Order status sent with this business order.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inquiry` | Inquiry. |\n| `accepted` | Accepted. |\n| `declined` | Declined. |"
                  },
                  "message": {
                    "type": "string",
                    "minLength": 0,
                    "description": "Outbound message content attached to this business order.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `0` characters |"
                  },
                  "title": {
                    "type": "string",
                    "minLength": 0,
                    "description": "Human-readable title shown to the recipient or operator.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `0` characters |"
                  },
                  "sellerId": {
                    "type": "string",
                    "pattern": "^[1-9][0-9]{0,18}$",
                    "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
                    "example": "739182640518203"
                  },
                  "token": {
                    "type": "string",
                    "minLength": 0,
                    "description": "Opaque token required by the target operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `0` characters |"
                  },
                  "totalAmount1000": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991,
                    "description": "Order total expressed in thousandths of the declared currency unit.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `9007199254740991` (inclusive) |"
                  },
                  "totalCurrencyCode": {
                    "type": "string",
                    "pattern": "^[A-Z]{3}$",
                    "description": "ISO 4217 currency code used for the order total.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Z]{3}$` |"
                  },
                  "catalogType": {
                    "type": "string",
                    "minLength": 0,
                    "description": "Category assigned to catalog.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `0` characters |"
                  }
                },
                "required": [
                  "id",
                  "itemCount",
                  "status",
                  "sellerId",
                  "totalAmount1000",
                  "totalCurrencyCode"
                ],
                "description": "Structured order values for this one of."
              }
            },
            "required": [
              "order"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "list": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Human-readable title shown to the recipient or operator.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                  },
                  "description": {
                    "type": "string",
                    "minLength": 0,
                    "description": "Human-readable description of this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `0` characters |"
                  },
                  "buttonText": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Text displayed on the action button.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                  },
                  "footer": {
                    "type": "string",
                    "minLength": 0,
                    "description": "Supplementary footer text shown below the primary content.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `0` characters |"
                  },
                  "sections": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "title": {
                          "type": "string",
                          "minLength": 0,
                          "description": "Human-readable title shown to the recipient or operator.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `0` characters |"
                        },
                        "rows": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "minLength": 1,
                                "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                              },
                              "title": {
                                "type": "string",
                                "minLength": 1,
                                "description": "Human-readable title shown to the recipient or operator.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                              },
                              "description": {
                                "type": "string",
                                "minLength": 0,
                                "description": "Human-readable description of this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `0` characters |"
                              }
                            },
                            "required": [
                              "id",
                              "title"
                            ]
                          },
                          "minItems": 1,
                          "maxItems": 30,
                          "description": "Rows associated with this section.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `30` items |"
                        }
                      },
                      "required": [
                        "rows"
                      ]
                    },
                    "minItems": 1,
                    "maxItems": 10,
                    "description": "Ordered sections displayed in the interactive message.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `10` items |\n| Total rows | At most `30` rows across all sections |\n| Row IDs | Every row ID must be unique across all sections |"
                  }
                },
                "required": [
                  "title",
                  "buttonText",
                  "sections"
                ],
                "description": "On an official WhatsApp Business number, `title` is the header (at most 60 characters) and `description` the body (at most 1,024 characters); without `description`, `title` is the body. There, each section title allows at most 24 characters and is required when the list has more than one section, lists allow at most 10 rows in total, row titles at most 24 characters, row IDs at most 200, row descriptions at most 72, `buttonText` at most 20 and `footer` at most 60. Every number also limits `buttonText` to 64 UTF-8 bytes, row `id` to 256 bytes and `title` and `description` to 256 and 4,096 bytes, so multibyte text reaches those byte limits before the character limits. Content outside any limit returns `400`."
              }
            },
            "required": [
              "list"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "buttons": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 0,
                    "description": "Human-readable title shown to the recipient or operator.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `0` characters |"
                  },
                  "body": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Primary text content shown to the recipient.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                  },
                  "footer": {
                    "type": "string",
                    "minLength": 0,
                    "description": "Supplementary footer text shown below the primary content.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `0` characters |"
                  },
                  "buttons": {
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "url"
                              ],
                              "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `url` | Url. |"
                            },
                            "text": {
                              "type": "string",
                              "minLength": 1,
                              "description": "Text content carried by this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                            },
                            "url": {
                              "type": "string",
                              "maxLength": 2048,
                              "format": "uri",
                              "description": "URL associated with this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `2048` characters |\n| Format | `uri` |"
                            }
                          },
                          "required": [
                            "type",
                            "text",
                            "url"
                          ]
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "call"
                              ],
                              "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `call` | Call. |"
                            },
                            "text": {
                              "type": "string",
                              "minLength": 1,
                              "description": "Text content carried by this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                            },
                            "phoneNumber": {
                              "type": "string",
                              "pattern": "^\\+?\\d{6,20}$",
                              "description": "Phone number in international format.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\+?\\d{6,20}$` |"
                            }
                          },
                          "required": [
                            "type",
                            "text",
                            "phoneNumber"
                          ]
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "reply"
                              ],
                              "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `reply` | Reply. |"
                            },
                            "text": {
                              "type": "string",
                              "minLength": 1,
                              "description": "Text content carried by this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                            },
                            "id": {
                              "type": "string",
                              "minLength": 1,
                              "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                            }
                          },
                          "required": [
                            "type",
                            "text",
                            "id"
                          ]
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "copy"
                              ],
                              "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `copy` | Copy. |"
                            },
                            "text": {
                              "type": "string",
                              "minLength": 1,
                              "description": "Text content carried by this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                            },
                            "copyCode": {
                              "type": "string",
                              "minLength": 1,
                              "description": "Text copied when the recipient activates the copy-code button.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                            }
                          },
                          "required": [
                            "type",
                            "text",
                            "copyCode"
                          ]
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "catalog"
                              ],
                              "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `catalog` | Catalog. |"
                            },
                            "text": {
                              "type": "string",
                              "minLength": 1,
                              "description": "Text content carried by this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                            },
                            "businessPhoneNumber": {
                              "type": "string",
                              "pattern": "^\\+?\\d{6,20}$",
                              "description": "WhatsApp business phone number whose catalog is opened by this button.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\+?\\d{6,20}$` |"
                            },
                            "catalogProductId": {
                              "type": "string",
                              "minLength": 0,
                              "description": "Identifier for the catalog product.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `0` characters |"
                            }
                          },
                          "required": [
                            "type",
                            "text",
                            "businessPhoneNumber"
                          ]
                        }
                      ]
                    },
                    "minItems": 1,
                    "maxItems": 3,
                    "description": "Interactive buttons displayed with the message.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Item alternative | Accepted input |\n| --- | --- |\n| Item alternative 1 | Type: `object`; Field `type`: `url`; Required fields: `type`, `text`, `url` |\n| Item alternative 2 | Type: `object`; Field `type`: `call`; Required fields: `type`, `text`, `phoneNumber` |\n| Item alternative 3 | Type: `object`; Field `type`: `reply`; Required fields: `type`, `text`, `id` |\n| Item alternative 4 | Type: `object`; Field `type`: `copy`; Required fields: `type`, `text`, `copyCode` |\n| Item alternative 5 | Type: `object`; Field `type`: `catalog`; Required fields: `type`, `text`, `businessPhoneNumber` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `3` items |"
                  }
                },
                "required": [
                  "body",
                  "buttons"
                ],
                "description": "On an official WhatsApp Business number, only `reply` buttons are sent; other button types return `501`. There, `body` allows at most 1,024 characters, `title` and `footer` at most 60, and each button needs a unique `id` and a unique `text` of at most 20 characters. Every number also limits each button `id` to 256 UTF-8 bytes. Content outside any limit returns `400`."
              }
            },
            "required": [
              "buttons"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "addressMessage": {
                "type": "object",
                "properties": {
                  "body": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Primary text content shown to the recipient.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                  },
                  "buttonText": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Text displayed on the action button.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                  },
                  "footer": {
                    "type": "string",
                    "minLength": 0,
                    "description": "Supplementary footer text shown below the primary content.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `0` characters |"
                  },
                  "country": {
                    "type": "string",
                    "pattern": "^[A-Z]{2}$",
                    "description": "ISO 3166-1 alpha-2 country code.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Z]{2}$` |"
                  }
                },
                "required": [
                  "body"
                ],
                "description": "Structured address message values for this one of."
              }
            },
            "required": [
              "addressMessage"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "flow": {
                "type": "object",
                "properties": {
                  "body": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Primary text content shown to the recipient.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                  },
                  "buttonText": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Text displayed on the action button.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                  },
                  "footer": {
                    "type": "string",
                    "minLength": 0,
                    "description": "Supplementary footer text shown below the primary content.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `0` characters |"
                  },
                  "id": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                  },
                  "token": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Opaque token required by the target operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                  },
                  "action": {
                    "type": "string",
                    "enum": [
                      "navigate",
                      "data_exchange"
                    ],
                    "description": "Action performed when the recipient activates this control.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `navigate` | Navigate. |\n| `data_exchange` | Data exchange. |"
                  },
                  "screen": {
                    "type": "string",
                    "minLength": 0,
                    "description": "Flow screen opened when the recipient activates the message.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `0` characters |"
                  },
                  "dataJson": {
                    "type": "string",
                    "minLength": 0,
                    "description": "JSON object encoded as a string and supplied to the Flow interaction.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `0` characters |\n| Serialized value | A non-null JSON object; arrays, scalar values, and invalid JSON are not accepted |\n| UTF-8 size | At most `16` KiB (`16,384` bytes) |"
                  }
                },
                "required": [
                  "body",
                  "buttonText",
                  "id",
                  "token",
                  "action"
                ],
                "oneOf": [
                  {
                    "properties": {
                      "action": {
                        "enum": [
                          "navigate"
                        ],
                        "description": "Action represented by this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `navigate` | Navigate. |"
                      }
                    },
                    "required": [
                      "screen"
                    ]
                  },
                  {
                    "properties": {
                      "action": {
                        "enum": [
                          "data_exchange"
                        ],
                        "description": "Action represented by this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `data_exchange` | Data exchange. |"
                      }
                    },
                    "not": {
                      "anyOf": [
                        {
                          "required": [
                            "screen"
                          ]
                        },
                        {
                          "required": [
                            "dataJson"
                          ]
                        }
                      ]
                    }
                  }
                ],
                "description": "Structured flow values for this one of.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `action`: `navigate`; Required fields: `screen` |\n| Alternative 2 | Type: `object`; Field `action`: `data_exchange`; Forbidden fields: `screen`, `dataJson` |"
              }
            },
            "required": [
              "flow"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "callPermissionRequest": {
                "type": "object",
                "properties": {
                  "body": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1024,
                    "description": "Why you want to call, shown above WhatsApp's allow and decline buttons. 1 to 1,024 Unicode characters.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `1024` characters |"
                  }
                },
                "required": [
                  "body"
                ],
                "additionalProperties": false,
                "description": "Ask the person for permission to call them. Cloud API numbers only; WhatsApp limits how often you can ask."
              }
            },
            "required": [
              "callPermissionRequest"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "template": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                  },
                  "language": {
                    "type": "string",
                    "minLength": 2,
                    "description": "Language or locale code used for this content.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `2` characters |"
                  },
                  "components": {
                    "type": "array",
                    "items": {},
                    "description": "Structured components that make up this message or template."
                  }
                },
                "required": [
                  "name",
                  "language"
                ],
                "additionalProperties": false,
                "description": "Structured template values for this one of."
              }
            },
            "required": [
              "template"
            ],
            "additionalProperties": false
          }
        ]
      },
      "messaging__SendMessageRequest": {
        "type": "object",
        "properties": {
          "conversation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ConversationReference"
              }
            ],
            "description": "Public conversation identifier or E.164 phone number.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Required fields: `id` |\n| Alternative 2 | Required fields: `phoneNumber` |\n| Alternative 3 | Required fields: `bsuid` |"
          },
          "isForwarded": {
            "type": "boolean",
            "description": "Mark this message as forwarded."
          },
          "mentions": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$",
              "description": "Opaque Polymorfa resource ID. Keep this value as a string.",
              "example": "739182640518203"
            },
            "description": "User IDs to mention in this message.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Item pattern | `^[1-9][0-9]{0,18}$` |"
          },
          "quotedMessage": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__QuotedMessage"
              }
            ],
            "description": "Specifies quoted message for this messaging send message request."
          },
          "content": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__MessageContent"
              }
            ],
            "description": "Specifies content for this messaging send message request.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `text` |\n| Alternative 2 | Type: `object`; Required fields: `image` |\n| Alternative 3 | Type: `object`; Required fields: `video` |\n| Alternative 4 | Type: `object`; Required fields: `file` |\n| Alternative 5 | Type: `object`; Required fields: `voice` |\n| Alternative 6 | Type: `object`; Required fields: `location` |\n| Alternative 7 | Type: `object`; Required fields: `poll` |\n| Alternative 8 | Type: `object`; Required fields: `contact` |\n| Alternative 9 | Type: `object`; Required fields: `requestPhoneNumber` |\n| Alternative 10 | Type: `object`; Required fields: `product` |\n| Alternative 11 | Type: `object`; Required fields: `productList` |\n| Alternative 12 | Type: `object`; Required fields: `order` |\n| Alternative 13 | Type: `object`; Required fields: `list` |\n| Alternative 14 | Type: `object`; Required fields: `buttons` |\n| Alternative 15 | Type: `object`; Required fields: `addressMessage` |\n| Alternative 16 | Type: `object`; Required fields: `flow` |\n| Alternative 17 | Type: `object`; Required fields: `callPermissionRequest` |\n| Alternative 18 | Type: `object`; Required fields: `template` |"
          }
        },
        "required": [
          "conversation",
          "content"
        ],
        "additionalProperties": false,
        "description": "Specify conversation and content containing exactly one message kind. Shared options remain outside content."
      },
      "messaging__MessageActionResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "description": "Current status of this resource or operation."
              }
            },
            "required": [
              "status"
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__SeenRequest": {
        "type": "object",
        "properties": {
          "conversation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ConversationReference"
              }
            ],
            "description": "Public conversation identifier or E.164 phone number.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Required fields: `id` |\n| Alternative 2 | Required fields: `phoneNumber` |\n| Alternative 3 | Required fields: `bsuid` |"
          },
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          }
        },
        "required": [
          "conversation",
          "id"
        ],
        "additionalProperties": false
      },
      "messaging__TypingRequest": {
        "type": "object",
        "properties": {
          "conversation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ConversationReference"
              }
            ],
            "description": "Public conversation identifier or E.164 phone number.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Required fields: `id` |\n| Alternative 2 | Required fields: `phoneNumber` |\n| Alternative 3 | Required fields: `bsuid` |"
          },
          "state": {
            "type": "string",
            "enum": [
              "typing",
              "recording",
              "paused"
            ],
            "description": "Typing state to publish for the target conversation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `typing` | Typing. |\n| `recording` | Recording. |\n| `paused` | Paused. |"
          },
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          }
        },
        "required": [
          "conversation",
          "state"
        ],
        "additionalProperties": false
      },
      "messaging__MessageReceipt": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "whatsapp_ids": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__WhatsAppMessageIds"
              }
            ],
            "description": "Exact observed provider references under linked_devices, official_api, or both. Use the Polymorfa id for message actions.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `linked_devices` |\n| Alternative 2 | Type: `object`; Required fields: `official_api` |"
          },
          "whatsapp_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "Temporary singular provider reference for older consumers. Use whatsapp_ids for transport-specific references.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `512` characters |",
            "deprecated": true
          },
          "conversation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ConversationIdentity"
              },
              {
                "description": "The message's conversation, including its public ID and known aliases."
              }
            ],
            "description": "Public conversation identifier or E.164 phone number."
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp associated with this event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "status": {
            "type": "string",
            "description": "Upstream acceptance status. Delivery and read receipts arrive separately."
          }
        },
        "required": [
          "id",
          "whatsapp_ids",
          "conversation",
          "timestamp",
          "status"
        ]
      },
      "messaging__SendReactionResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__MessageReceipt"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__ReactRequest": {
        "type": "object",
        "properties": {
          "conversation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ConversationReference"
              }
            ],
            "description": "Public conversation identifier or E.164 phone number.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Required fields: `id` |\n| Alternative 2 | Required fields: `phoneNumber` |\n| Alternative 3 | Required fields: `bsuid` |"
          },
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "reaction": {
            "type": "string",
            "description": "Reaction applied to the referenced message."
          }
        },
        "required": [
          "conversation",
          "id",
          "reaction"
        ],
        "additionalProperties": false
      },
      "messaging__StarRequest": {
        "type": "object",
        "properties": {
          "conversation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ConversationReference"
              }
            ],
            "description": "Public conversation identifier or E.164 phone number.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Required fields: `id` |\n| Alternative 2 | Required fields: `phoneNumber` |\n| Alternative 3 | Required fields: `bsuid` |"
          },
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "star": {
            "type": "boolean",
            "description": "Whether star."
          }
        },
        "required": [
          "conversation",
          "id",
          "star"
        ],
        "additionalProperties": false
      },
      "messaging__EditMessageRequest": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "minLength": 1,
            "description": "Text content carried by this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          }
        },
        "required": [
          "text"
        ]
      },
      "messaging__DisappearingTimerRequest": {
        "type": "object",
        "properties": {
          "durationSeconds": {
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  0
                ]
              },
              {
                "type": "number",
                "enum": [
                  86400
                ]
              },
              {
                "type": "number",
                "enum": [
                  604800
                ]
              },
              {
                "type": "number",
                "enum": [
                  7776000
                ]
              }
            ],
            "description": "Duration in seconds.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Value `0` |\n| Alternative 2 | Type: `number`; Value `86400` |\n| Alternative 3 | Type: `number`; Value `604800` |\n| Alternative 4 | Type: `number`; Value `7776000` |"
          }
        },
        "required": [
          "durationSeconds"
        ]
      },
      "messaging__HistoryMessageSummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "whatsapp_ids": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__WhatsAppMessageIds"
              }
            ],
            "description": "Exact observed provider references under linked_devices, official_api, or both. Use the Polymorfa id for message actions.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `linked_devices` |\n| Alternative 2 | Type: `object`; Required fields: `official_api` |"
          },
          "whatsapp_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "Temporary singular provider reference for older consumers. Use whatsapp_ids for transport-specific references.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `512` characters |",
            "deprecated": true
          },
          "direction": {
            "type": "string",
            "enum": [
              "inbound",
              "outbound"
            ],
            "description": "Specifies direction for this messaging history message summary.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inbound` | Inbound. |\n| `outbound` | Outbound. |"
          },
          "type": {
            "type": "string",
            "description": "Type discriminator for this object."
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp associated with this event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "id",
          "whatsapp_ids",
          "direction",
          "type",
          "timestamp"
        ]
      },
      "messaging__HistoryChat": {
        "type": "object",
        "properties": {
          "conversation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ConversationIdentity"
              }
            ],
            "description": "Public conversation identifier or E.164 phone number."
          },
          "kind": {
            "type": "string",
            "enum": [
              "direct",
              "group",
              "channel",
              "broadcast"
            ],
            "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `direct` | Direct. |\n| `group` | Group. |\n| `channel` | Channel. |\n| `broadcast` | Broadcast. |"
          },
          "lastActivityAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for last activity at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "lastMessage": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__HistoryMessageSummary"
              }
            ],
            "description": "Specifies last message for this messaging history chat."
          }
        },
        "required": [
          "conversation",
          "kind",
          "lastActivityAt",
          "lastMessage"
        ]
      },
      "messaging__ListChatsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__HistoryChat"
            },
            "description": "Structured data carried by this object."
          },
          "hasMore": {
            "type": "boolean",
            "description": "True when `nextCursor` returns more items."
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies next cursor for this messaging list chats response.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "previousCursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Always null for conversations. Use nextCursor to continue listing.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "success",
          "data",
          "hasMore",
          "nextCursor",
          "previousCursor"
        ]
      },
      "messaging__GetChatResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__HistoryChat"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__HistoryConversation": {
        "allOf": [
          {
            "$ref": "#/components/schemas/messaging__ConversationIdentity"
          },
          {
            "type": "object",
            "properties": {
              "sender": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/messaging__ConversationIdentity"
                  },
                  {
                    "description": "Author of an inbound group message."
                  }
                ],
                "description": "Stable identifier for the user who sent the message or event."
              }
            },
            "additionalProperties": false
          }
        ]
      },
      "messaging__HistoryMedia": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Media ID. Download the bytes from `url` with a credential that has `media:read`."
          },
          "mimeType": {
            "type": "string",
            "description": "IANA media type that matches the media payload.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Media type | IANA `type/subtype` value matching the payload, such as `image/jpeg`, `video/mp4`, `audio/ogg`, or `application/pdf` |"
          },
          "fileLength": {
            "type": "integer",
            "minimum": 0,
            "description": "Size of the media file in bytes.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "url": {
            "type": "string",
            "description": "Path of the media download method.",
            "example": "/messaging/media/0e6f1c3a-5a55-4f3c-9d4f-0b1f8f2a9c11"
          }
        },
        "required": [
          "id",
          "mimeType",
          "fileLength",
          "url"
        ]
      },
      "messaging__HistoryMediaRetrieval": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "enum": [
              "pending",
              "stored",
              "unavailable",
              "expired",
              "too_large",
              "unsupported_type",
              "failed",
              "cancelled"
            ],
            "description": "`pending`: the copy is not stored yet. `stored`: `media` lists the copy. Every other state is final and no copy will be stored.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending` | Pending. |\n| `stored` | Stored. |\n| `unavailable` | Unavailable. |\n| `expired` | Expired. |\n| `too_large` | Too large. |\n| `unsupported_type` | Unsupported type. |\n| `failed` | Failed. |\n| `cancelled` | Cancelled. |"
          },
          "reason": {
            "type": "string",
            "description": "Why a final state other than `stored` was reached, for example `provider_media_not_found` or `media_too_large`.",
            "example": "provider_media_expired"
          }
        },
        "required": [
          "state"
        ],
        "description": "Official API media only: whether a copy of the media was stored with this message."
      },
      "messaging__HistoryMessage": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "whatsapp_ids": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__WhatsAppMessageIds"
              }
            ],
            "description": "Exact observed provider references under linked_devices, official_api, or both. Use the Polymorfa id for message actions.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `linked_devices` |\n| Alternative 2 | Type: `object`; Required fields: `official_api` |"
          },
          "whatsapp_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "Temporary singular provider reference for older consumers. Use whatsapp_ids for transport-specific references.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `512` characters |",
            "deprecated": true
          },
          "conversation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__HistoryConversation"
              }
            ],
            "description": "Public conversation identifier or E.164 phone number."
          },
          "direction": {
            "type": "string",
            "enum": [
              "inbound",
              "outbound"
            ],
            "description": "Specifies direction for this messaging history message.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inbound` | Inbound. |\n| `outbound` | Outbound. |"
          },
          "fromMe": {
            "type": "boolean",
            "description": "True when the Number sent the message, including from another linked device."
          },
          "type": {
            "type": "string",
            "description": "Message type as delivered in `message.received`, for example `text` or `image`."
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "When WhatsApp reported the message.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "pushName": {
            "type": "string",
            "description": "WhatsApp display name reported by the sender's client."
          },
          "text": {
            "type": "string",
            "description": "Text content carried by this object."
          },
          "caption": {
            "type": "string",
            "description": "Caption shown with the attached media."
          },
          "mimeType": {
            "type": "string",
            "description": "IANA media type that matches the media payload.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Media type | IANA `type/subtype` value matching the payload, such as `image/jpeg`, `video/mp4`, `audio/ogg`, or `application/pdf` |"
          },
          "filename": {
            "type": "string",
            "description": "Filename presented for the media attachment."
          },
          "ptt": {
            "type": "boolean",
            "description": "Whether the audio is presented as a push-to-talk voice message."
          },
          "latitude": {
            "type": "number",
            "description": "Latitude in decimal degrees."
          },
          "longitude": {
            "type": "number",
            "description": "Longitude in decimal degrees."
          },
          "displayName": {
            "type": "string",
            "description": "Human-readable display name."
          },
          "title": {
            "type": "string",
            "description": "Human-readable title shown to the recipient or operator."
          },
          "reaction": {
            "type": "string",
            "description": "Reaction applied to the referenced message."
          },
          "reactionTo": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "edited": {
            "type": "boolean",
            "description": "Whether the event represents an edited message."
          },
          "unavailable": {
            "type": "boolean",
            "description": "Whether the content is unavailable."
          },
          "unavailableReason": {
            "type": "string",
            "description": "Reason the content is unavailable."
          },
          "pollOptions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "description": "Human-readable name for this resource."
                },
                "hash": {
                  "type": "string",
                  "description": "Specifies hash for this poll option."
                }
              },
              "required": [
                "name",
                "hash"
              ]
            },
            "description": "Options recipients can choose in the poll."
          },
          "order": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CloudOrder"
              },
              {
                "description": "Official API `order` messages: the cart as Meta reported it, when every line is readable."
              }
            ],
            "description": "Specifies order for this messaging history message."
          },
          "media": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__HistoryMedia"
            },
            "description": "Downloadable media for image, video, audio, document, and sticker messages. Empty when no copy is available."
          },
          "mediaRetrieval": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__HistoryMediaRetrieval"
              }
            ],
            "description": "Specifies media retrieval for this messaging history message."
          }
        },
        "required": [
          "id",
          "whatsapp_ids",
          "conversation",
          "direction",
          "fromMe",
          "type",
          "timestamp"
        ]
      },
      "messaging__ListChatMessagesResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__HistoryMessage"
            },
            "description": "Structured data carried by this object."
          },
          "hasMore": {
            "type": "boolean",
            "description": "True when `nextCursor` returns more items."
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies next cursor for this messaging list chat messages response.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "previousCursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Cursor for the preceding page of messages. Null when no preceding page exists.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "success",
          "data",
          "hasMore",
          "nextCursor",
          "previousCursor"
        ]
      },
      "messaging__GetChatMessageResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__HistoryMessage"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__OfficialServiceWindow": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "enum": [
              "open",
              "closed",
              "unknown"
            ],
            "description": "`open`: the person messaged, reacted or called this Number through the Official API in the last 24 hours, so free-form messages can be sent. `closed`: no such activity in the last 24 hours; only approved templates can be sent, and Polymorfa refuses free-form sends with `conversation_window_closed`. `unknown`: Polymorfa cannot prove the window is closed; sends are passed to WhatsApp, which decides.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `open` | Open. |\n| `closed` | Closed. |\n| `unknown` | Unknown. |"
          },
          "reason": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "not_tracked",
              "tracking_started",
              "notifications_interrupted",
              "identity_unlinked",
              null
            ],
            "description": "Why the state is `unknown`, otherwise null. `not_tracked`: no WhatsApp notification has been processed for this connection yet. `tracking_started`: tracking began less than 24 hours ago. `notifications_interrupted`: a WhatsApp notification could not be processed in the last 24 hours. `identity_unlinked`: someone without a phone number (or username ID) wrote in during the last 24 hours and could be this person.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `not_tracked` | Not tracked. |\n| `tracking_started` | Tracking started. |\n| `notifications_interrupted` | Notifications interrupted. |\n| `identity_unlinked` | Identity unlinked. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `not_tracked` or `tracking_started` or `notifications_interrupted` or `identity_unlinked` |\n| Alternative 2 | `null` |"
          },
          "openedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "When the person's latest known message, reaction or call started or reset the window. Null when none is known.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "expiresAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "`openedAt` plus 24 hours. In the past when the window has closed.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "checkedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for checked at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "state",
          "reason",
          "openedAt",
          "expiresAt",
          "checkedAt"
        ]
      },
      "messaging__GetCustomerServiceWindowResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__OfficialServiceWindow"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__MetaPricingGroup": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "description": "Pricing category as WhatsApp reported it, for example `marketing`, `utility`, `authentication` or `service`.",
            "example": "utility"
          },
          "pricingModel": {
            "type": "string",
            "description": "Pricing model as WhatsApp reported it, for example `PMP`.",
            "example": "PMP"
          },
          "pricingType": {
            "type": [
              "string",
              "null"
            ],
            "description": "Pricing type as WhatsApp reported it, for example `regular`, `free_customer_service` or `free_entry_point`. Null when not reported.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |",
            "example": "regular"
          },
          "billable": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "The `billable` flag as WhatsApp reported it. Null when not reported.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `boolean` |\n| Alternative 2 | `null` |"
          },
          "messages": {
            "type": "integer",
            "minimum": 0,
            "description": "Messages WhatsApp reported with this classification.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "category",
          "pricingModel",
          "pricingType",
          "billable",
          "messages"
        ]
      },
      "messaging__MetaPricingSummary": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "meta"
            ],
            "description": "Always `meta`: these are WhatsApp's own reports. Meta bills your WhatsApp Business Account directly. They are not a Polymorfa charge and contain no prices.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `meta` | Meta. |"
          },
          "since": {
            "type": "string",
            "format": "date-time",
            "description": "Specifies since for this messaging meta pricing summary.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "until": {
            "type": "string",
            "format": "date-time",
            "description": "Specifies until for this messaging meta pricing summary.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "messages": {
            "type": "integer",
            "minimum": 0,
            "description": "Messages with a WhatsApp pricing report in the period.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__MetaPricingGroup"
            },
            "description": "Groups associated with this messaging meta pricing summary."
          }
        },
        "required": [
          "source",
          "since",
          "until",
          "messages",
          "groups"
        ]
      },
      "messaging__GetMetaPricingSummaryResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__MetaPricingSummary"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CallPermissionLimit": {
        "type": "object",
        "properties": {
          "period": {
            "type": "string",
            "description": "ISO 8601 duration of the window, for example `PT24H` or `P7D`."
          },
          "maxAllowed": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies max allowed for this messaging call permission limit.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "used": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies used for this messaging call permission limit.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "resetsAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "When the window resets, when WhatsApp reports it.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "period",
          "maxAllowed",
          "used",
          "resetsAt"
        ],
        "additionalProperties": false
      },
      "messaging__CallPermissionAction": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "allowed": {
            "type": "boolean",
            "description": "Whether WhatsApp allows the action now."
          },
          "limits": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__CallPermissionLimit"
            },
            "description": "Limits associated with this messaging call permission action."
          }
        },
        "required": [
          "allowed",
          "limits"
        ],
        "additionalProperties": false,
        "description": "Whether this number can send the person a call permission request now, with WhatsApp's limits."
      },
      "messaging__CallPermission": {
        "type": "object",
        "properties": {
          "conversation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ConversationIdentity"
              }
            ],
            "description": "Public conversation identifier or E.164 phone number."
          },
          "status": {
            "type": "string",
            "enum": [
              "none",
              "temporary",
              "permanent",
              "revoked"
            ],
            "description": "`none`: no permission. `temporary`: granted until `expiresAt`. `permanent`: granted without expiry. `revoked`: the person declined or withdrew permission, or WhatsApp withdrew it after unanswered calls.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `temporary` | Temporary. |\n| `permanent` | Permanent. |\n| `revoked` | Revoked. |"
          },
          "expiresAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "When a temporary permission ends; null otherwise.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "source": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "user_action",
              "automatic",
              "sync",
              "call_refused",
              null
            ],
            "description": "How the last change was learned: the person's reply (`user_action`), WhatsApp acting on its own (`automatic`), asking WhatsApp (`sync`), or a call WhatsApp refused for lack of permission (`call_refused`). Null when nothing is recorded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `user_action` | User action. |\n| `automatic` | Automatic. |\n| `sync` | Sync. |\n| `call_refused` | Call refused. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `user_action` or `automatic` or `sync` or `call_refused` |\n| Alternative 2 | `null` |"
          },
          "updatedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "When the status last changed, or null.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "checkedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "When WhatsApp was last asked, or null.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "fresh": {
            "type": "boolean",
            "description": "True when WhatsApp was asked during this request. False means the stored state is returned because WhatsApp could not be reached."
          },
          "actions": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "requestPermission": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/messaging__CallPermissionAction"
                  }
                ],
                "description": "Specifies request permission for this action.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `allowed`, `limits` |\n| Alternative 2 | `null` |"
              },
              "startCall": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/messaging__CallPermissionAction"
                  },
                  {
                    "description": "Whether this number can call the person now, with WhatsApp's limits."
                  }
                ],
                "description": "Specifies start call for this action.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `allowed`, `limits` |\n| Alternative 2 | `null` |"
              }
            },
            "required": [
              "requestPermission",
              "startCall"
            ],
            "additionalProperties": false,
            "description": "WhatsApp's limits, present when `fresh` is true.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `requestPermission`, `startCall` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "conversation",
          "status",
          "expiresAt",
          "source",
          "updatedAt",
          "checkedAt",
          "fresh",
          "actions"
        ],
        "additionalProperties": false
      },
      "messaging__GetCallPermissionResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CallPermission"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CallCheck": {
        "type": "object",
        "properties": {
          "allowed": {
            "type": "boolean",
            "description": "Whether a call placed now would pass every check Polymorfa and WhatsApp report."
          },
          "refusal": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "calls_disabled",
              "call_recipient_opted_out",
              "call_destination_blocked",
              "call_permission_required",
              "call_limit_reached",
              null
            ],
            "description": "The first reason the call would be refused, or null.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `calls_disabled` | Calls disabled. |\n| `call_recipient_opted_out` | Call recipient opted out. |\n| `call_destination_blocked` | Call destination blocked. |\n| `call_permission_required` | Call permission required. |\n| `call_limit_reached` | Call limit reached. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `calls_disabled` or `call_recipient_opted_out` or `call_destination_blocked` or `call_permission_required` or `call_limit_reached` |\n| Alternative 2 | `null` |"
          },
          "permission": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "none",
                  "temporary",
                  "permanent",
                  "revoked"
                ],
                "description": "`none`: no permission. `temporary`: granted until `expiresAt`. `permanent`: granted without expiry. `revoked`: the person declined or withdrew permission, or WhatsApp withdrew it after unanswered calls.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `temporary` | Temporary. |\n| `permanent` | Permanent. |\n| `revoked` | Revoked. |"
              },
              "expiresAt": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date-time",
                "description": "When a temporary permission ends; null otherwise.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
              },
              "source": {
                "type": [
                  "string",
                  "null"
                ],
                "enum": [
                  "user_action",
                  "automatic",
                  "sync",
                  "call_refused",
                  null
                ],
                "description": "How the last change was learned: the person's reply (`user_action`), WhatsApp acting on its own (`automatic`), asking WhatsApp (`sync`), or a call WhatsApp refused for lack of permission (`call_refused`). Null when nothing is recorded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `user_action` | User action. |\n| `automatic` | Automatic. |\n| `sync` | Sync. |\n| `call_refused` | Call refused. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `user_action` or `automatic` or `sync` or `call_refused` |\n| Alternative 2 | `null` |"
              },
              "updatedAt": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date-time",
                "description": "When the status last changed, or null.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
              },
              "checkedAt": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date-time",
                "description": "When WhatsApp was last asked, or null.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
              },
              "fresh": {
                "type": "boolean",
                "description": "True when WhatsApp was asked during this request. False means the stored state is returned because WhatsApp could not be reached."
              },
              "actions": {
                "type": [
                  "object",
                  "null"
                ],
                "properties": {
                  "requestPermission": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/messaging__CallPermissionAction"
                      }
                    ],
                    "description": "Specifies request permission for this action.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `allowed`, `limits` |\n| Alternative 2 | `null` |"
                  },
                  "startCall": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/messaging__CallPermissionAction"
                      },
                      {
                        "description": "Whether this number can call the person now, with WhatsApp's limits."
                      }
                    ],
                    "description": "Specifies start call for this action.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `allowed`, `limits` |\n| Alternative 2 | `null` |"
                  }
                },
                "required": [
                  "requestPermission",
                  "startCall"
                ],
                "additionalProperties": false,
                "description": "WhatsApp's limits, present when `fresh` is true.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `requestPermission`, `startCall` |\n| Alternative 2 | `null` |"
              }
            },
            "required": [
              "status",
              "expiresAt",
              "source",
              "updatedAt",
              "checkedAt",
              "fresh",
              "actions"
            ],
            "additionalProperties": false,
            "description": "The person's call permission on a Cloud API number; null on linked-device numbers.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `status`: `none` or `temporary` or `permanent` or `revoked`; Field `source`: `user_action` or `automatic` or `sync` or `call_refused` or `null`; Required fields: `status`, `expiresAt`, `source`, `updatedAt`, `checkedAt`, `fresh`, `actions` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "allowed",
          "refusal",
          "permission"
        ],
        "additionalProperties": false
      },
      "messaging__CheckCallResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CallCheck"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CallCheckRequest": {
        "type": "object",
        "properties": {
          "session": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "The session (number) that would place the call.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          },
          "to": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "User ID or phone number in E.164 format.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |"
          }
        },
        "required": [
          "session",
          "to"
        ],
        "additionalProperties": false
      },
      "messaging__VoipCreatedCallLink": {
        "type": "object",
        "properties": {
          "session": {
            "type": "string",
            "description": "Identifier of the connected Polymorfa session."
          },
          "token": {
            "type": "string",
            "description": "Opaque token required by the target operation."
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "URL associated with this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
          },
          "video": {
            "type": "boolean",
            "description": "Whether video."
          }
        },
        "required": [
          "session",
          "token",
          "url",
          "video"
        ]
      },
      "messaging__VoipCreatedCallLinkEnvelope": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__VoipCreatedCallLink"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__VoipCreateCallLinkRequest": {
        "type": "object",
        "properties": {
          "session": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          },
          "video": {
            "type": "boolean",
            "description": "Create a video link. Defaults to false (voice)."
          }
        },
        "required": [
          "session"
        ],
        "additionalProperties": false
      },
      "messaging__VoipPreviewedCallLink": {
        "type": "object",
        "properties": {
          "session": {
            "type": "string",
            "description": "Identifier of the connected Polymorfa session."
          },
          "video": {
            "type": "boolean",
            "description": "Whether video."
          },
          "creator": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ConversationIdentity"
              }
            ],
            "description": "Specifies creator for this messaging voip previewed call link."
          },
          "approvalRequired": {
            "type": "boolean",
            "description": "Whether approval required."
          },
          "isAdmin": {
            "type": "boolean",
            "description": "Whether WhatsApp reports this Number as a link administrator. This field does not grant API permissions."
          }
        },
        "required": [
          "session",
          "video",
          "creator",
          "approvalRequired",
          "isAdmin"
        ]
      },
      "messaging__VoipPreviewedCallLinkEnvelope": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__VoipPreviewedCallLink"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__VoipPreviewCallLinkRequest": {
        "type": "object",
        "properties": {
          "session": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          },
          "token": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_-]{1,256}$",
            "description": "Private token from the WhatsApp call link. Send it only in the request body.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9_-]{1,256}$` |"
          },
          "video": {
            "type": "boolean",
            "description": "True for a video link, false for a voice link. Must match the link."
          }
        },
        "required": [
          "session",
          "token"
        ],
        "additionalProperties": false
      },
      "messaging__VoipPlacedCall": {
        "type": "object",
        "properties": {
          "callId": {
            "type": "string",
            "description": "Identifier of the WhatsApp call."
          },
          "session": {
            "type": "string",
            "description": "Identifier of the connected Polymorfa session."
          },
          "video": {
            "type": "boolean",
            "description": "Whether video."
          }
        },
        "required": [
          "callId",
          "session",
          "video"
        ]
      },
      "messaging__VoipPlacedCallResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__VoipPlacedCall"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__VoipPlaceCallRequest": {
        "type": "object",
        "properties": {
          "session": {
            "type": "string",
            "minLength": 1,
            "example": "support",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          },
          "to": {
            "type": "string",
            "pattern": "^(?:\\+[1-9]\\d{1,14}|[1-9][0-9]{0,18})$",
            "example": "+15550100",
            "description": "Specifies to for this messaging voip place call request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^(?:\\+[1-9]\\d{1,14}\\|[1-9][0-9]{0,18})$` |"
          },
          "groupId": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Identifier for the group.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          },
          "participants": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^(?:\\+[1-9]\\d{1,14}|[1-9][0-9]{0,18})$"
            },
            "minItems": 2,
            "maxItems": 31,
            "uniqueItems": true,
            "description": "Participants associated with the group or conversation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `2` through `31` items |\n| Duplicates | Not accepted; every array item must be unique |\n| Item pattern | `^(?:\\+[1-9]\\d{1,14}\\|[1-9][0-9]{0,18})$` |"
          },
          "video": {
            "type": "boolean",
            "description": "Whether video."
          },
          "exclusive": {
            "type": "boolean",
            "description": "Claim the call for the placing participant."
          },
          "participant": {
            "type": "string",
            "pattern": "^[A-Za-z0-9._:@-]{1,128}$",
            "description": "Server credentials only: the participant acting in the call. Defaults to `default`. Client tokens act as their own participant and must omit this field.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9._:@-]{1,128}$` |",
            "example": "agent-7"
          }
        },
        "description": "Provide exactly one of to, participants or groupId. Group calls require a Linked Device number and 2 to 31 remote recipients.",
        "oneOf": [
          {
            "required": [
              "to"
            ],
            "not": {
              "anyOf": [
                {
                  "required": [
                    "participants"
                  ]
                },
                {
                  "required": [
                    "groupId"
                  ]
                }
              ]
            }
          },
          {
            "required": [
              "participants"
            ],
            "not": {
              "anyOf": [
                {
                  "required": [
                    "to"
                  ]
                },
                {
                  "required": [
                    "groupId"
                  ]
                }
              ]
            }
          },
          {
            "required": [
              "groupId"
            ],
            "not": {
              "anyOf": [
                {
                  "required": [
                    "to"
                  ]
                },
                {
                  "required": [
                    "participants"
                  ]
                }
              ]
            }
          }
        ]
      },
      "messaging__VoipAnswerResult": {
        "type": "object",
        "properties": {
          "answered": {
            "type": "boolean",
            "description": "Whether answered."
          },
          "answeredBy": {
            "type": "string",
            "example": "client:agent-7",
            "description": "Specifies answered by for this messaging voip answer result."
          },
          "exclusive": {
            "type": "boolean",
            "description": "Whether exclusive."
          }
        },
        "required": [
          "answered",
          "answeredBy",
          "exclusive"
        ]
      },
      "messaging__VoipAcceptCallResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__VoipAnswerResult"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__VoipAcceptCallRequest": {
        "type": "object",
        "properties": {
          "video": {
            "type": "boolean",
            "description": "Whether video."
          },
          "exclusive": {
            "type": "boolean",
            "description": "Claim the call. Other participants then receive `409 call_claimed` for accept and media, and their open connections close."
          },
          "participant": {
            "type": "string",
            "pattern": "^[A-Za-z0-9._:@-]{1,128}$",
            "description": "Server credentials only: the participant acting in the call. Defaults to `default`. Client tokens act as their own participant and must omit this field.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9._:@-]{1,128}$` |",
            "example": "agent-7"
          }
        }
      },
      "messaging__VoipRejectCallRequest": {
        "type": "object",
        "properties": {
          "participant": {
            "type": "string",
            "pattern": "^[A-Za-z0-9._:@-]{1,128}$",
            "description": "Server credentials only: the participant acting in the call. Defaults to `default`. Client tokens act as their own participant and must omit this field.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9._:@-]{1,128}$` |",
            "example": "agent-7"
          }
        }
      },
      "messaging__VoipLeaveRequest": {
        "type": "object",
        "properties": {
          "connectionId": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_-]{8,64}$",
            "description": "Client-chosen identifier of one media connection. Reusing it replaces that connection.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9_-]{8,64}$` |",
            "example": "conn_0123456789"
          },
          "participant": {
            "type": "string",
            "pattern": "^[A-Za-z0-9._:@-]{1,128}$",
            "description": "Server credentials only: the participant acting in the call. Defaults to `default`. Client tokens act as their own participant and must omit this field.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9._:@-]{1,128}$` |",
            "example": "agent-7"
          }
        },
        "required": [
          "connectionId"
        ]
      },
      "messaging__VoipReactionRequest": {
        "type": "object",
        "properties": {
          "connectionId": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_-]{8,64}$",
            "description": "Client-chosen identifier of one media connection. Reusing it replaces that connection.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9_-]{8,64}$` |",
            "example": "conn_0123456789"
          },
          "participant": {
            "type": "string",
            "pattern": "^[A-Za-z0-9._:@-]{1,128}$",
            "description": "Server credentials only: the participant acting in the call, which must own the connection. Defaults to `default`. Client tokens act as their own participant and must omit this field.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9._:@-]{1,128}$` |",
            "example": "agent-7"
          },
          "emoji": {
            "type": "string",
            "enum": [
              "",
              "👍",
              "❤️",
              "😂",
              "😮",
              "😢",
              "🙏"
            ],
            "description": "Empty clears the previous reaction.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `\"\"` | Empty value. |\n| `👍` | 👍. |\n| `❤️` | ❤️. |\n| `😂` | 😂. |\n| `😮` | 😮. |\n| `😢` | 😢. |\n| `🙏` | 🙏. |"
          }
        },
        "required": [
          "connectionId",
          "emoji"
        ],
        "additionalProperties": false
      },
      "messaging__VoipHandRequest": {
        "type": "object",
        "properties": {
          "connectionId": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_-]{8,64}$",
            "description": "Client-chosen identifier of one media connection. Reusing it replaces that connection.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9_-]{8,64}$` |",
            "example": "conn_0123456789"
          },
          "participant": {
            "type": "string",
            "pattern": "^[A-Za-z0-9._:@-]{1,128}$",
            "description": "Server credentials only: the participant acting in the call, which must own the connection. Defaults to `default`. Client tokens act as their own participant and must omit this field.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9._:@-]{1,128}$` |",
            "example": "agent-7"
          },
          "raised": {
            "type": "boolean",
            "description": "Whether raised."
          }
        },
        "required": [
          "connectionId",
          "raised"
        ],
        "additionalProperties": false
      },
      "messaging__VoipAddParticipantRequest": {
        "type": "object",
        "properties": {
          "to": {
            "type": "string",
            "pattern": "^(?:\\+[1-9]\\d{1,14}|[1-9][0-9]{0,18})$",
            "example": "+15550100",
            "description": "Specifies to for this messaging voip add participant request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^(?:\\+[1-9]\\d{1,14}\\|[1-9][0-9]{0,18})$` |"
          }
        },
        "required": [
          "to"
        ]
      },
      "messaging__VoipParticipant": {
        "type": "object",
        "properties": {
          "handRaised": {
            "type": "boolean",
            "description": "Whether this participant has raised their hand."
          },
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "phoneNumber": {
            "type": "string",
            "pattern": "^\\+[1-9]\\d{1,14}$",
            "description": "Phone number in international format.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\+[1-9]\\d{1,14}$` |"
          },
          "bsuid": {
            "type": "string",
            "pattern": "^[A-Z]{2}\\.[A-Za-z0-9]{1,128}$",
            "description": "Business-scoped user identifier (BSUID), scoped to the owning business portfolio.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Z]{2}\\.[A-Za-z0-9]{1,128}$` |"
          },
          "username": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "WhatsApp username when one is available.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
          },
          "audioMuted": {
            "type": "boolean",
            "description": "Whether audio muted."
          },
          "video": {
            "type": "boolean",
            "description": "Whether video."
          },
          "state": {
            "type": "string",
            "enum": [
              "invited",
              "ringing",
              "connected",
              "left"
            ],
            "description": "Current lifecycle state of this resource.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `invited` | Invited. |\n| `ringing` | Ringing. |\n| `connected` | Connected. |\n| `left` | Left. |"
          }
        },
        "required": [
          "id",
          "audioMuted",
          "video",
          "state"
        ],
        "additionalProperties": false
      },
      "messaging__VoipAddParticipantResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__VoipParticipant"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__VoipCallReportClient": {
        "type": "object",
        "properties": {
          "sdk": {
            "type": "string",
            "pattern": "^[a-z0-9@/._-]{1,32}$",
            "description": "Package name of the SDK that sends the report.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z0-9@/._-]{1,32}$` |",
            "example": "@polymorfa/browser"
          },
          "version": {
            "type": "string",
            "maxLength": 32,
            "pattern": "^[0-9]{1,6}\\.[0-9]{1,6}\\.[0-9]{1,6}(?:[-+][0-9A-Za-z.+-]{1,24})?$",
            "description": "SDK version: `MAJOR.MINOR.PATCH` with an optional suffix.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `32` characters |\n| Pattern | `^[0-9]{1,6}\\.[0-9]{1,6}\\.[0-9]{1,6}(?:[-+][0-9A-Za-z.+-]{1,24})?$` |",
            "example": "1.4.0"
          },
          "platform": {
            "type": "string",
            "enum": [
              "browser",
              "node",
              "other"
            ],
            "description": "Specifies platform for this messaging voip call report client.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `browser` | Browser. |\n| `node` | Node. |\n| `other` | Other. |"
          }
        },
        "required": [
          "sdk",
          "version",
          "platform"
        ],
        "additionalProperties": false
      },
      "messaging__VoipCallQuality": {
        "type": "object",
        "properties": {
          "rttMs": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60000,
            "description": "Round-trip time in milliseconds.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `60000` (inclusive) |",
            "example": 84
          },
          "jitterMs": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60000,
            "description": "Receive jitter in milliseconds.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `60000` (inclusive) |",
            "example": 6
          },
          "packetsLost": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2147483647,
            "description": "Packets lost since the connection started.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `2147483647` (inclusive) |",
            "example": 12
          },
          "packetsReceived": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2147483647,
            "description": "Packets received since the connection started.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `2147483647` (inclusive) |",
            "example": 4810
          },
          "audioCodec": {
            "type": "string",
            "pattern": "^[A-Za-z0-9/.-]{1,32}$",
            "description": "Negotiated audio codec.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9/.-]{1,32}$` |",
            "example": "audio/opus"
          },
          "videoCodec": {
            "type": "string",
            "pattern": "^[A-Za-z0-9/.-]{1,32}$",
            "description": "Negotiated video codec.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9/.-]{1,32}$` |",
            "example": "video/VP8"
          },
          "candidateType": {
            "type": "string",
            "enum": [
              "host",
              "srflx",
              "prflx",
              "relay"
            ],
            "description": "Type of the local ICE candidate in use. `relay` means media flows through a TURN relay.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `host` | Host. |\n| `srflx` | Srflx. |\n| `prflx` | Prflx. |\n| `relay` | Relay. |"
          },
          "reconnects": {
            "type": "integer",
            "minimum": 0,
            "maximum": 1000,
            "description": "Times this connection reconnected so far.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1000` (inclusive) |",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Omit figures you did not measure. Send at least one.",
        "minProperties": 1
      },
      "messaging__VoipCallQualityReport": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "quality"
            ],
            "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `quality` | Quality. |"
          },
          "connectionId": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_-]{8,64}$",
            "description": "Client-chosen identifier of one media connection. Reusing it replaces that connection.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9_-]{8,64}$` |",
            "example": "conn_0123456789"
          },
          "participant": {
            "type": "string",
            "pattern": "^[A-Za-z0-9._:@-]{1,128}$",
            "description": "Server credentials only: the participant acting in the call. Defaults to `default`. Client tokens act as their own participant and must omit this field.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9._:@-]{1,128}$` |",
            "example": "agent-7"
          },
          "client": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__VoipCallReportClient"
              }
            ],
            "description": "Specifies client for this messaging voip call quality report."
          },
          "quality": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__VoipCallQuality"
              }
            ],
            "description": "Specifies quality for this messaging voip call quality report.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Object size | At least `1` properties |"
          }
        },
        "required": [
          "kind",
          "connectionId",
          "quality"
        ],
        "additionalProperties": false
      },
      "messaging__VoipCallErrorReport": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "error"
            ],
            "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `error` | Error. |"
          },
          "connectionId": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_-]{8,64}$",
            "description": "Client-chosen identifier of one media connection. Reusing it replaces that connection.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9_-]{8,64}$` |",
            "example": "conn_0123456789"
          },
          "participant": {
            "type": "string",
            "pattern": "^[A-Za-z0-9._:@-]{1,128}$",
            "description": "Server credentials only: the participant acting in the call. Defaults to `default`. Client tokens act as their own participant and must omit this field.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9._:@-]{1,128}$` |",
            "example": "agent-7"
          },
          "client": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__VoipCallReportClient"
              }
            ],
            "description": "Specifies client for this messaging voip call error report."
          },
          "error": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "media_permission_denied",
                  "device_not_found",
                  "device_in_use",
                  "ice_failed",
                  "negotiation_failed",
                  "media_timeout",
                  "reconnect_exhausted",
                  "token_refresh_failed",
                  "unsupported_browser",
                  "other"
                ],
                "description": "Stable machine-readable code for this result.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `media_permission_denied` | Media permission denied. |\n| `device_not_found` | Device not found. |\n| `device_in_use` | Device in use. |\n| `ice_failed` | Ice failed. |\n| `negotiation_failed` | Negotiation failed. |\n| `media_timeout` | Media timeout. |\n| `reconnect_exhausted` | Reconnect exhausted. |\n| `token_refresh_failed` | Token refresh failed. |\n| `unsupported_browser` | Unsupported browser. |\n| `other` | Other. |"
              }
            },
            "required": [
              "code"
            ],
            "additionalProperties": false,
            "description": "Error details returned when the operation fails."
          }
        },
        "required": [
          "kind",
          "connectionId",
          "error"
        ],
        "additionalProperties": false
      },
      "messaging__VoipCallReportRequest": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/messaging__VoipCallQualityReport"
          },
          {
            "$ref": "#/components/schemas/messaging__VoipCallErrorReport"
          }
        ],
        "discriminator": {
          "propertyName": "kind",
          "mapping": {
            "quality": "#/components/schemas/messaging__VoipCallQualityReport",
            "error": "#/components/schemas/messaging__VoipCallErrorReport"
          }
        }
      },
      "messaging__RejectCallRequest": {
        "type": "object",
        "properties": {
          "from": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "ID of the incoming caller\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          }
        },
        "required": [
          "from"
        ]
      },
      "messaging__Participant": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "phoneNumber": {
            "type": "string",
            "description": "Phone number in international format."
          },
          "bsuid": {
            "type": "string",
            "description": "Business-scoped user identifier (BSUID), scoped to the owning business portfolio."
          },
          "username": {
            "type": "string",
            "description": "WhatsApp username when one is available."
          },
          "isAdmin": {
            "type": "boolean",
            "description": "Whether admin."
          },
          "isSuperAdmin": {
            "type": "boolean",
            "description": "Whether super admin."
          }
        },
        "required": [
          "id",
          "isAdmin",
          "isSuperAdmin"
        ]
      },
      "messaging__Group": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa group ID. Keep it as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          },
          "name": {
            "type": "string",
            "description": "Human-readable name for this resource."
          },
          "description": {
            "type": "string",
            "description": "Human-readable description of this resource."
          },
          "ownerId": {
            "type": "string",
            "description": "Identifier for the owner."
          },
          "createdAt": {
            "type": "number",
            "description": "Unix timestamp in seconds"
          },
          "participants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__Participant"
            },
            "description": "Participants associated with the group or conversation."
          }
        },
        "required": [
          "id",
          "name",
          "description",
          "ownerId",
          "createdAt",
          "participants"
        ]
      },
      "messaging__ListGroupsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__Group"
            },
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CreateGroupResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__Group"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CreateGroupRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          },
          "participants": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "minItems": 1,
            "description": "Participants associated with the group or conversation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At least `1` items |\n| Item pattern | `^[1-9][0-9]{0,18}$` |"
          }
        },
        "required": [
          "name",
          "participants"
        ]
      },
      "messaging__GroupInviteInfo": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier for this resource."
          },
          "subject": {
            "type": "string",
            "description": "Specifies subject for this messaging group invite info."
          },
          "creatorId": {
            "type": "string",
            "description": "Identifier for the creator."
          },
          "createdAt": {
            "type": "number",
            "description": "Unix timestamp in seconds when this resource was created."
          },
          "size": {
            "type": "number",
            "description": "Specifies size for this messaging group invite info."
          },
          "participants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__Participant"
            },
            "description": "Participants associated with the group or conversation."
          }
        },
        "required": [
          "id",
          "subject",
          "creatorId",
          "createdAt",
          "size",
          "participants"
        ]
      },
      "messaging__GetGroupJoinInfoResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__GroupInviteInfo"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__JoinGroupRequest": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "minLength": 1,
            "description": "Group invite code used to join the target group.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          }
        },
        "required": [
          "code"
        ]
      },
      "messaging__GroupCapabilities": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "synced",
              "unknown"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `synced` | Synced. |\n| `unknown` | Unknown. |"
          },
          "syncedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for synced at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "checkedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for checked at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "capabilities": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string",
                  "enum": [
                    "polls.endTime",
                    "polls.hideVoters",
                    "polls.creatorEdit"
                  ],
                  "description": "Specifies key for this capability.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `polls.endTime` | Polls.end time. |\n| `polls.hideVoters` | Polls.hide voters. |\n| `polls.creatorEdit` | Polls.creator edit. |"
                },
                "kind": {
                  "type": "string",
                  "enum": [
                    "feature"
                  ],
                  "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `feature` | Feature. |"
                },
                "unit": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "enum": [
                    null
                  ],
                  "description": "Specifies unit for this capability.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
                },
                "value": {
                  "type": [
                    "boolean",
                    "null"
                  ],
                  "description": "Value assigned to this field.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `boolean` |\n| Alternative 2 | `null` |"
                },
                "source": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "enum": [
                    "server",
                    "client_default",
                    null
                  ],
                  "description": "Specifies source for this capability.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `server` | Server. |\n| `client_default` | Client default. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `server` or `client_default` |\n| Alternative 2 | `null` |"
                }
              },
              "required": [
                "key",
                "kind",
                "unit",
                "value",
                "source"
              ],
              "additionalProperties": false
            },
            "description": "Capabilities associated with this messaging group capability."
          }
        },
        "required": [
          "status",
          "syncedAt",
          "checkedAt",
          "capabilities"
        ],
        "additionalProperties": false
      },
      "messaging__GetGroupCapabilitiesResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__GroupCapabilities"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__GetGroupResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__Group"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__SetGroupFieldRequest": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "description": "Value assigned to this field."
          }
        },
        "required": [
          "value"
        ]
      },
      "messaging__InviteCodeResponse": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Group invite code"
          }
        },
        "required": [
          "code"
        ]
      },
      "messaging__GetGroupInviteCodeResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__InviteCodeResponse"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__RevokeGroupInviteCodeResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__InviteCodeResponse"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__GetGroupParticipantsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__Participant"
            },
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__GroupParticipantsRequest": {
        "type": "object",
        "properties": {
          "participants": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            },
            "minItems": 1,
            "description": "Participants associated with the group or conversation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At least `1` items |\n| Item pattern | `^[1-9][0-9]{0,18}$` |"
          }
        },
        "required": [
          "participants"
        ]
      },
      "messaging__SetGroupPictureRequest": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "URL associated with this resource."
          },
          "base64": {
            "type": "string",
            "description": "Base64-encoded content with no data-URL prefix."
          }
        }
      },
      "messaging__GroupAdminOnlySettingRequest": {
        "type": "object",
        "properties": {
          "adminsOnly": {
            "type": "boolean",
            "description": "Whether admins only."
          }
        },
        "required": [
          "adminsOnly"
        ]
      },
      "messaging__GroupMemberAddModeRequest": {
        "type": "object",
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "admin_add",
              "all_member_add"
            ],
            "description": "Operating mode selected for this feature.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `admin_add` | Admin add. |\n| `all_member_add` | All member add. |"
          }
        },
        "required": [
          "mode"
        ]
      },
      "messaging__GroupJoinApprovalRequest": {
        "type": "object",
        "properties": {
          "required": {
            "type": "boolean",
            "description": "Whether required."
          }
        },
        "required": [
          "required"
        ]
      },
      "messaging__Contact": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "phoneNumber": {
            "type": "string",
            "description": "Phone number in international format."
          },
          "bsuid": {
            "type": "string",
            "description": "Business-scoped user identifier (BSUID), scoped to the owning business portfolio."
          },
          "username": {
            "type": "string",
            "description": "WhatsApp username when one is available."
          },
          "name": {
            "type": "string",
            "description": "Human-readable name for this resource."
          },
          "pushName": {
            "type": "string",
            "description": "WhatsApp display name reported by the sender's client."
          },
          "businessName": {
            "type": "string",
            "description": "Business name shown to the customer."
          },
          "profileUrl": {
            "type": "string",
            "description": "URL for the profile."
          }
        },
        "required": [
          "id",
          "name",
          "pushName"
        ]
      },
      "messaging__ListContactsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__Contact"
            },
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CheckContactResult": {
        "type": "object",
        "properties": {
          "exists": {
            "type": "boolean",
            "description": "Whether exists."
          },
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "phoneNumber": {
            "type": "string",
            "description": "Phone number in international format."
          },
          "bsuid": {
            "type": "string",
            "description": "Business-scoped user identifier (BSUID), scoped to the owning business portfolio."
          },
          "username": {
            "type": "string",
            "description": "WhatsApp username when one is available."
          }
        },
        "required": [
          "exists"
        ]
      },
      "messaging__CheckContactsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__CheckContactResult"
            },
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__Blocklist": {
        "type": "object",
        "properties": {
          "hash": {
            "type": "string",
            "description": "Specifies hash for this messaging blocklist."
          },
          "contacts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "pattern": "^[1-9][0-9]{0,18}$",
                  "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
                  "example": "739182640518203"
                },
                "phoneNumber": {
                  "type": "string",
                  "description": "Phone number in international format."
                },
                "bsuid": {
                  "type": "string",
                  "description": "Business-scoped user identifier (BSUID), scoped to the owning business portfolio."
                },
                "username": {
                  "type": "string",
                  "description": "WhatsApp username when one is available."
                }
              },
              "required": [
                "id"
              ]
            },
            "description": "Contacts returned or affected by this operation."
          }
        },
        "required": [
          "hash",
          "contacts"
        ]
      },
      "messaging__GetBlocklistResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__Blocklist"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__GetContactResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__Contact"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__ProfilePictureResponse": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "HTTPS URL of the profile picture"
          }
        },
        "required": [
          "url"
        ]
      },
      "messaging__GetContactPictureResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ProfilePictureResponse"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__UserInfo": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "phoneNumber": {
            "type": "string",
            "description": "Phone number in international format."
          },
          "bsuid": {
            "type": "string",
            "description": "Business-scoped user identifier (BSUID), scoped to the owning business portfolio."
          },
          "username": {
            "type": "string",
            "description": "WhatsApp username when one is available."
          },
          "status": {
            "type": "string",
            "description": "WhatsApp profile About text reported for this account or user."
          },
          "pictureId": {
            "type": "string",
            "description": "Identifier for the picture."
          },
          "verifiedName": {
            "type": "string",
            "description": "Human-readable verified name for this messaging user info."
          },
          "devices": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "pattern": "^[1-9][0-9]{0,18}$",
                  "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
                  "example": "739182640518203"
                },
                "phoneNumber": {
                  "type": "string",
                  "description": "Phone number in international format."
                },
                "bsuid": {
                  "type": "string",
                  "description": "Business-scoped user identifier (BSUID), scoped to the owning business portfolio."
                },
                "username": {
                  "type": "string",
                  "description": "WhatsApp username when one is available."
                },
                "device": {
                  "type": "integer",
                  "description": "Specifies device for this device."
                }
              },
              "required": [
                "id",
                "device"
              ]
            },
            "description": "Devices associated with this messaging user info."
          }
        },
        "required": [
          "id",
          "status",
          "pictureId",
          "verifiedName",
          "devices"
        ]
      },
      "messaging__GetUserInfoResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__UserInfo"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__GetUserDevicesResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Identifier for this resource."
                },
                "phoneNumber": {
                  "type": "string",
                  "description": "Phone number in international format."
                },
                "device": {
                  "type": "integer",
                  "description": "Specifies device for this data."
                }
              },
              "required": [
                "device"
              ]
            },
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__BusinessProfile": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "phoneNumber": {
            "type": "string",
            "description": "Phone number in international format."
          },
          "bsuid": {
            "type": "string",
            "description": "Business-scoped user identifier (BSUID), scoped to the owning business portfolio."
          },
          "username": {
            "type": "string",
            "description": "WhatsApp username when one is available."
          },
          "address": {
            "type": "string",
            "description": "Specifies address for this messaging business profile."
          },
          "email": {
            "type": "string",
            "description": "Email address associated with this resource."
          },
          "description": {
            "type": "string",
            "description": "Human-readable description of this resource."
          },
          "websites": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri"
            },
            "description": "Websites associated with this messaging business profile.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Item format | `uri` |"
          },
          "coverPhotoId": {
            "type": "string",
            "description": "Identifier of the business-profile cover photo."
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Identifier for this resource."
                },
                "name": {
                  "type": "string",
                  "description": "Human-readable name for this resource."
                }
              },
              "required": [
                "id",
                "name"
              ]
            },
            "description": "Categories associated with this messaging business profile."
          },
          "options": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Selectable options carried by this object."
          },
          "hoursTimeZone": {
            "type": "string",
            "description": "Specifies hours time zone for this messaging business profile."
          },
          "hours": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "dayOfWeek": {
                  "type": "string",
                  "description": "Day of the week when these hours apply."
                },
                "mode": {
                  "type": "string",
                  "description": "Operating mode selected for this feature."
                },
                "openTime": {
                  "type": "string",
                  "description": "Local opening time for this business-hours interval."
                },
                "closeTime": {
                  "type": "string",
                  "description": "Local closing time for this business-hours interval."
                }
              },
              "required": [
                "dayOfWeek",
                "mode",
                "openTime",
                "closeTime"
              ]
            },
            "description": "Hours associated with this messaging business profile."
          }
        },
        "required": [
          "id",
          "address",
          "email",
          "description",
          "websites",
          "coverPhotoId",
          "categories",
          "options",
          "hoursTimeZone",
          "hours"
        ]
      },
      "messaging__GetBusinessProfileResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__BusinessProfile"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__BusinessLinkedAccounts": {
        "type": "object",
        "properties": {
          "facebookPage": {
            "type": "object",
            "properties": {
              "hasActiveCTWAAd": {
                "type": "boolean",
                "description": "Whether active ctwa ad."
              },
              "hasCreatedAd": {
                "type": "boolean",
                "description": "Whether created ad."
              },
              "id": {
                "type": "string",
                "description": "Identifier for this resource."
              },
              "displayName": {
                "type": "string",
                "description": "Human-readable display name."
              },
              "profileSync": {
                "type": "string",
                "enum": [
                  "disable",
                  "import"
                ],
                "description": "Specifies profile sync for this facebook page.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `disable` | Disable. |\n| `import` | Import. |"
              },
              "profilePictureUrl": {
                "type": "string",
                "format": "uri",
                "description": "URL of the account's profile picture.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
              },
              "showOnProfile": {
                "type": "boolean",
                "description": "Whether show on profile."
              },
              "whatsAppAsPageButton": {
                "type": "boolean",
                "description": "Whether whats app as page button."
              }
            },
            "required": [
              "hasActiveCTWAAd",
              "hasCreatedAd",
              "id",
              "displayName",
              "profilePictureUrl",
              "showOnProfile",
              "whatsAppAsPageButton"
            ],
            "description": "Structured facebook page values for this messaging business linked account."
          },
          "facebookBusiness": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Identifier for this resource."
              },
              "displayName": {
                "type": "string",
                "description": "Human-readable display name."
              },
              "catalogId": {
                "type": "string",
                "description": "Identifier of the WhatsApp catalog."
              },
              "catalogState": {
                "type": "string",
                "enum": [
                  "disable",
                  "import"
                ],
                "description": "Specifies catalog state for this facebook business.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `disable` | Disable. |\n| `import` | Import. |"
              }
            },
            "required": [
              "id",
              "displayName"
            ],
            "description": "Structured facebook business values for this messaging business linked account."
          },
          "instagramProfessional": {
            "type": "object",
            "properties": {
              "handle": {
                "type": "string",
                "description": "Specifies handle for this instagram professional."
              },
              "displayName": {
                "type": "string",
                "description": "Human-readable display name."
              },
              "profilePictureUrl": {
                "type": "string",
                "format": "uri",
                "description": "URL of the account's profile picture.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
              },
              "showOnProfile": {
                "type": "boolean",
                "description": "Whether show on profile."
              }
            },
            "required": [
              "handle",
              "displayName",
              "profilePictureUrl",
              "showOnProfile"
            ],
            "description": "Structured instagram professional values for this messaging business linked account."
          },
          "whatsAppAdIdentity": {
            "type": "object",
            "properties": {
              "hasActiveCTWAAd": {
                "type": "boolean",
                "description": "Whether active ctwa ad."
              },
              "hasCreatedAd": {
                "type": "boolean",
                "description": "Whether created ad."
              },
              "id": {
                "type": "string",
                "description": "Identifier for this resource."
              }
            },
            "required": [
              "hasActiveCTWAAd",
              "hasCreatedAd",
              "id"
            ],
            "description": "Structured whats app ad identity values for this messaging business linked account."
          }
        }
      },
      "messaging__GetBusinessLinkedAccountsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__BusinessLinkedAccounts"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__BusinessEligibility": {
        "type": "object",
        "properties": {
          "features": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "feature": {
                  "type": "string",
                  "enum": [
                    "meta_verified",
                    "marketing_messages",
                    "genai",
                    "genai_image",
                    "meta_one",
                    "bb_pro"
                  ],
                  "description": "Specifies feature for this feature.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `meta_verified` | Meta verified. |\n| `marketing_messages` | Marketing messages. |\n| `genai` | Genai. |\n| `genai_image` | Genai image. |\n| `meta_one` | Meta one. |\n| `bb_pro` | Bb pro. |"
                },
                "status": {
                  "type": "string",
                  "description": "Current status of this resource or operation."
                },
                "expiration": {
                  "type": "integer",
                  "description": "Specifies expiration for this feature."
                },
                "additionalParams": {
                  "type": "string",
                  "description": "Specifies additional params for this feature."
                },
                "showPrivacyInterstitialToNewUsers": {
                  "type": "boolean",
                  "description": "Whether show privacy interstitial to new users."
                },
                "v1Enabled": {
                  "type": "boolean",
                  "description": "Whether v1 enabled."
                }
              },
              "required": [
                "feature",
                "status"
              ]
            },
            "maxItems": 6,
            "description": "Features associated with this messaging business eligibility.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `6` items |"
          }
        },
        "required": [
          "features"
        ]
      },
      "messaging__GetBusinessEligibilityResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__BusinessEligibility"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__GetOwnBusinessProfileResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__BusinessProfile"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__UpdateBusinessProfileResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "description": "Current status of this resource or operation."
              }
            },
            "required": [
              "status"
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__BusinessProfileUpdateRequest": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "maxLength": 512,
            "description": "Specifies address for this messaging business profile update request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `512` characters |"
          },
          "email": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  ""
                ]
              },
              {
                "type": "string",
                "maxLength": 320,
                "format": "email"
              }
            ],
            "description": "Email address associated with this resource.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `\"\"` |\n| Alternative 2 | Type: `string`; String length: At most `320` characters; Format: `email` |"
          },
          "description": {
            "type": "string",
            "maxLength": 1024,
            "description": "Human-readable description of this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `1024` characters |"
          },
          "websites": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 2048,
              "format": "uri"
            },
            "minItems": 1,
            "maxItems": 2,
            "description": "Websites associated with this messaging business profile update request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `2` items |\n| Item string length | At most `2048` characters |\n| Item format | `uri` |"
          },
          "hours": {
            "type": "object",
            "properties": {
              "timeZone": {
                "type": "string",
                "minLength": 1,
                "maxLength": 128,
                "description": "IANA time-zone name used to interpret these business hours.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
              },
              "days": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "dayOfWeek": {
                      "type": "string",
                      "enum": [
                        "sun",
                        "mon",
                        "tue",
                        "wed",
                        "thu",
                        "fri",
                        "sat"
                      ],
                      "description": "Day of the week when these hours apply.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `sun` | Sun. |\n| `mon` | Mon. |\n| `tue` | Tue. |\n| `wed` | Wed. |\n| `thu` | Thu. |\n| `fri` | Fri. |\n| `sat` | Sat. |"
                    },
                    "mode": {
                      "type": "string",
                      "enum": [
                        "specific_hours",
                        "open_24h",
                        "appointment_only"
                      ],
                      "description": "Operating mode selected for this feature.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `specific_hours` | Specific hours. |\n| `open_24h` | Open 24h. |\n| `appointment_only` | Appointment only. |"
                    },
                    "openTime": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 1439,
                      "description": "Local opening time as minutes after midnight, from 0 through 1439.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1439` (inclusive) |"
                    },
                    "closeTime": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 1439,
                      "description": "Local closing time as minutes after midnight, from 0 through 1439.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1439` (inclusive) |"
                    }
                  },
                  "required": [
                    "dayOfWeek",
                    "mode"
                  ]
                },
                "minItems": 1,
                "maxItems": 7,
                "description": "Days associated with this hour.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `7` items |"
              }
            },
            "required": [
              "timeZone",
              "days"
            ],
            "description": "Structured hours values for this messaging business profile update request."
          }
        }
      },
      "messaging__SetBusinessCoverPhotoResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "object",
            "properties": {
              "coverPhotoId": {
                "type": "string",
                "description": "Identifier of the business-profile cover photo."
              }
            },
            "required": [
              "coverPhotoId"
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__BusinessCoverPhotoRequest": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "maxLength": 2048,
            "format": "uri",
            "description": "URL associated with this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `2048` characters |\n| Format | `uri` |"
          },
          "base64": {
            "type": "string",
            "minLength": 1,
            "maxLength": 6990508,
            "description": "Base64-encoded content with no data-URL prefix.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `6990508` characters |"
          }
        }
      },
      "messaging__DeleteBusinessCoverPhotoResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "description": "Current status of this resource or operation."
              }
            },
            "required": [
              "status"
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__BusinessMerchantCompliance": {
        "type": "object",
        "properties": {
          "entityName": {
            "type": "string",
            "maxLength": 256,
            "description": "Human-readable entity name for this messaging business merchant compliance.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |"
          },
          "entityType": {
            "type": "string",
            "enum": [
              "SOLE_PROPRIETORSHIP",
              "PARTNERSHIP",
              "PRIVATE_COMPANY",
              "PUBLIC_COMPANY",
              "LIMITED_LIABILITY_PARTNERSHIP",
              "OTHER"
            ],
            "description": "Category assigned to entity.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `SOLE_PROPRIETORSHIP` | Sole proprietorship. |\n| `PARTNERSHIP` | Partnership. |\n| `PRIVATE_COMPANY` | Private company. |\n| `PUBLIC_COMPANY` | Public company. |\n| `LIMITED_LIABILITY_PARTNERSHIP` | Limited liability partnership. |\n| `OTHER` | Other. |"
          },
          "isRegistered": {
            "type": "boolean",
            "description": "Whether registered."
          },
          "entityTypeCustom": {
            "type": "string",
            "maxLength": 256,
            "description": "Specifies entity type custom for this messaging business merchant compliance.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |"
          },
          "customerCare": {
            "type": "object",
            "properties": {
              "email": {
                "type": "string",
                "maxLength": 254,
                "description": "Email address associated with this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `254` characters |"
              },
              "landlineNumber": {
                "type": "string",
                "maxLength": 64,
                "description": "Landline phone number in international format.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `64` characters |"
              },
              "mobileNumber": {
                "type": "string",
                "maxLength": 64,
                "description": "Mobile phone number in international format.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `64` characters |"
              }
            },
            "required": [
              "email",
              "landlineNumber",
              "mobileNumber"
            ],
            "additionalProperties": false,
            "description": "Structured customer care values for this messaging business merchant compliance."
          },
          "grievanceOfficer": {
            "type": "object",
            "properties": {
              "email": {
                "type": "string",
                "maxLength": 254,
                "description": "Email address associated with this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `254` characters |"
              },
              "landlineNumber": {
                "type": "string",
                "maxLength": 64,
                "description": "Landline phone number in international format.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `64` characters |"
              },
              "mobileNumber": {
                "type": "string",
                "maxLength": 64,
                "description": "Mobile phone number in international format.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `64` characters |"
              },
              "name": {
                "type": "string",
                "maxLength": 256,
                "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |"
              }
            },
            "required": [
              "email",
              "landlineNumber",
              "mobileNumber",
              "name"
            ],
            "additionalProperties": false,
            "description": "Structured grievance officer values for this messaging business merchant compliance."
          }
        },
        "required": [
          "entityName",
          "entityType",
          "isRegistered",
          "entityTypeCustom",
          "customerCare",
          "grievanceOfficer"
        ],
        "additionalProperties": false
      },
      "messaging__GetBusinessMerchantComplianceResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__BusinessMerchantCompliance"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__SetBusinessMerchantComplianceResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__BusinessMerchantCompliance"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__BusinessQuickReplyMutation": {
        "type": "object",
        "properties": {
          "shortcut": {
            "type": "string",
            "minLength": 1,
            "maxLength": 25,
            "pattern": "^[\\p{L}\\p{N}]+$",
            "description": "Specifies shortcut for this messaging business quick reply mutation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `25` characters |\n| Pattern | `^[\\p{L}\\p{N}]+$` |"
          },
          "message": {
            "type": "string",
            "minLength": 1,
            "maxLength": 65536,
            "description": "Message content saved for this business quick reply.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `65536` characters |"
          },
          "keywords": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "maxItems": 100,
            "default": [],
            "description": "Keywords associated with this messaging business quick reply mutation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `100` items |\n| Item string length | `1` through `256` characters |"
          },
          "count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2147483647,
            "default": 0,
            "description": "Usage count recorded for this business quick reply.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `2147483647` (inclusive) |"
          }
        },
        "required": [
          "shortcut",
          "message"
        ]
      },
      "messaging__BusinessQuickReply": {
        "allOf": [
          {
            "$ref": "#/components/schemas/messaging__BusinessQuickReplyMutation"
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Identifier for this resource."
              }
            },
            "required": [
              "id"
            ]
          }
        ]
      },
      "messaging__CreateBusinessQuickReplyResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__BusinessQuickReply"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__BusinessQuickReplyObserved": {
        "allOf": [
          {
            "$ref": "#/components/schemas/messaging__BusinessQuickReply"
          },
          {
            "type": "object",
            "properties": {
              "associatedLabelIds": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Associated label ids associated with this all of."
              },
              "observedAt": {
                "type": "string",
                "format": "date-time",
                "description": "ISO 8601 timestamp when Polymorfa observed this state.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
              }
            },
            "required": [
              "associatedLabelIds",
              "observedAt"
            ]
          }
        ]
      },
      "messaging__BusinessQuickReplyCollection": {
        "type": "object",
        "properties": {
          "policy": {
            "type": "string",
            "enum": [
              "off",
              "events",
              "cache"
            ],
            "description": "Specifies policy for this messaging business quick reply collection.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
          },
          "status": {
            "type": "string",
            "enum": [
              "disabled",
              "unknown",
              "partial",
              "fresh"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `disabled` | Disabled. |\n| `unknown` | Unknown. |\n| `partial` | Partial. |\n| `fresh` | Fresh. |"
          },
          "unknownReason": {
            "type": "string",
            "enum": [
              "observation_disabled",
              "not_retained",
              "not_observed"
            ],
            "description": "Reason the value could not be classified.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `observation_disabled` | Observation disabled. |\n| `not_retained` | Not retained. |\n| `not_observed` | Not observed. |"
          },
          "observedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when Polymorfa observed this state.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "quickReplies": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__BusinessQuickReplyObserved"
            },
            "description": "Quick replies associated with this messaging business quick reply collection."
          }
        },
        "required": [
          "policy",
          "status",
          "quickReplies"
        ]
      },
      "messaging__ListBusinessQuickRepliesResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__BusinessQuickReplyCollection"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__SetBusinessQuickReplyResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__BusinessQuickReply"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__DeleteBusinessQuickReplyResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Identifier for this resource."
              },
              "status": {
                "type": "string",
                "enum": [
                  "DELETED"
                ],
                "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `DELETED` | Deleted. |"
              }
            },
            "required": [
              "id",
              "status"
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__BusinessProduct": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier for this resource."
          },
          "retailerId": {
            "type": "string",
            "description": "Merchant-defined identifier for the catalog item."
          },
          "belongsTo": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "name": {
            "type": "string",
            "description": "Human-readable name for this resource."
          },
          "description": {
            "type": "string",
            "description": "Human-readable description of this resource."
          },
          "price": {
            "type": "string",
            "description": "Price as a digit string in thousandths of the declared currency unit."
          },
          "currency": {
            "type": "string",
            "description": "ISO 4217 currency code."
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "URL associated with this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
          },
          "shimmedUrl": {
            "type": "string",
            "format": "uri",
            "description": "URL for the shimmed.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
          },
          "hidden": {
            "type": "boolean",
            "description": "Whether this resource is hidden from ordinary listings."
          },
          "sanctioned": {
            "type": "boolean",
            "description": "Whether sanctioned."
          },
          "maxAvailable": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies max available for this messaging business product.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "availability": {
            "type": "string",
            "description": "Specifies availability for this messaging business product."
          },
          "complianceCategory": {
            "type": "string",
            "description": "Specifies compliance category for this messaging business product."
          },
          "compliance": {
            "type": "object",
            "properties": {
              "countryCodeOrigin": {
                "type": "string",
                "description": "ISO 3166-1 alpha-2 country code where the product originated."
              },
              "importerName": {
                "type": "string",
                "description": "Name of the product importer declared for compliance."
              },
              "importerAddress": {
                "type": "object",
                "properties": {
                  "street1": {
                    "type": "string",
                    "description": "Specifies street1 for this importer address."
                  },
                  "street2": {
                    "type": "string",
                    "description": "Specifies street2 for this importer address."
                  },
                  "city": {
                    "type": "string",
                    "description": "Specifies city for this importer address."
                  },
                  "region": {
                    "type": "string",
                    "description": "Specifies region for this importer address."
                  },
                  "postalCode": {
                    "type": "string",
                    "description": "Machine-readable postal code for this importer address."
                  },
                  "countryCode": {
                    "type": "string",
                    "description": "ISO 3166-1 alpha-2 country code."
                  }
                },
                "description": "Structured importer address values for this compliance."
              }
            },
            "description": "Structured compliance values for this messaging business product."
          },
          "media": {
            "type": "object",
            "properties": {
              "images": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Identifier for this resource."
                    },
                    "originalUrl": {
                      "type": "string",
                      "format": "uri",
                      "description": "Original URL supplied before normalization or proxying.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
                    },
                    "requestUrl": {
                      "type": "string",
                      "format": "uri",
                      "description": "URL for the request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
                    }
                  },
                  "required": [
                    "id"
                  ]
                },
                "description": "Images attached to or representing this resource."
              },
              "videos": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Identifier for this resource."
                    },
                    "originalUrl": {
                      "type": "string",
                      "format": "uri",
                      "description": "Original URL supplied before normalization or proxying.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
                    },
                    "thumbnailUrl": {
                      "type": "string",
                      "format": "uri",
                      "description": "URL for the thumbnail.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
                    }
                  },
                  "required": [
                    "id"
                  ]
                },
                "description": "Videos associated with this media."
              }
            },
            "required": [
              "images",
              "videos"
            ],
            "description": "Product media gallery entries associated with this catalog item."
          },
          "salePrice": {
            "type": "object",
            "properties": {
              "price": {
                "type": "string",
                "description": "Price as a digit string in thousandths of the declared currency unit."
              },
              "startDate": {
                "type": "string",
                "description": "Specifies start date for this sale price."
              },
              "endDate": {
                "type": "string",
                "description": "Specifies end date for this sale price."
              }
            },
            "required": [
              "price"
            ],
            "description": "Structured sale price details for this messaging business product."
          },
          "status": {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "description": "Current status of this resource or operation."
              },
              "canAppeal": {
                "type": "boolean",
                "description": "Whether appeal."
              }
            },
            "required": [
              "canAppeal"
            ],
            "description": "Structured status details for this messaging business product."
          },
          "variant": {
            "type": "object",
            "properties": {
              "availability": {
                "type": "object",
                "properties": {
                  "listings": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "productId": {
                          "type": "string",
                          "description": "Identifier for the product."
                        },
                        "available": {
                          "type": "boolean",
                          "description": "Whether this product variant listing is available."
                        },
                        "options": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string",
                                "description": "Human-readable name for this resource."
                              },
                              "value": {
                                "type": "string",
                                "description": "Value assigned to this field."
                              }
                            },
                            "required": [
                              "name",
                              "value"
                            ]
                          },
                          "description": "Selectable options carried by this object."
                        }
                      },
                      "required": [
                        "available",
                        "options"
                      ]
                    },
                    "description": "Listings associated with this availability."
                  }
                },
                "required": [
                  "listings"
                ],
                "description": "Structured availability values for this variant."
              },
              "listingDetails": {
                "type": "object",
                "properties": {
                  "description": {
                    "type": "string",
                    "description": "Human-readable description of this resource."
                  },
                  "lowestPrice": {
                    "type": "string",
                    "description": "Specifies lowest price for this listing detail."
                  },
                  "multiPrice": {
                    "type": "string",
                    "description": "Specifies multi price for this listing detail."
                  }
                },
                "description": "Structured listing details values for this variant."
              },
              "types": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Human-readable name for this resource."
                    },
                    "options": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "value": {
                            "type": "string",
                            "description": "Value assigned to this field."
                          },
                          "thumbnail": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "Identifier for this resource."
                              },
                              "originalUrl": {
                                "type": "string",
                                "format": "uri",
                                "description": "Original URL supplied before normalization or proxying.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
                              },
                              "requestUrl": {
                                "type": "string",
                                "format": "uri",
                                "description": "URL for the request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
                              },
                              "originalDimensions": {
                                "type": "object",
                                "properties": {
                                  "width": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Width in pixels.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "height": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Height in pixels.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  }
                                },
                                "description": "Structured original dimensions values for this thumbnail."
                              }
                            },
                            "required": [
                              "originalDimensions"
                            ],
                            "description": "Structured thumbnail values for this option."
                          }
                        },
                        "required": [
                          "value"
                        ]
                      },
                      "description": "Selectable options carried by this object."
                    }
                  },
                  "required": [
                    "name",
                    "options"
                  ]
                },
                "description": "Types associated with this variant."
              },
              "properties": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Human-readable name for this resource."
                    },
                    "value": {
                      "type": "string",
                      "description": "Value assigned to this field."
                    }
                  },
                  "required": [
                    "name",
                    "value"
                  ]
                },
                "description": "Properties associated with this variant."
              }
            },
            "required": [
              "availability",
              "listingDetails",
              "types",
              "properties"
            ],
            "description": "Structured variant values for this messaging business product."
          }
        },
        "required": [
          "id",
          "name",
          "price",
          "currency",
          "hidden",
          "sanctioned",
          "media",
          "status"
        ]
      },
      "messaging__BusinessCatalogPage": {
        "type": "object",
        "properties": {
          "next": {
            "type": "string",
            "description": "Specifies next for this messaging business catalog page."
          },
          "previous": {
            "type": "string",
            "description": "Specifies previous for this messaging business catalog page."
          },
          "products": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__BusinessProduct"
            },
            "description": "Products returned by this operation."
          }
        },
        "required": [
          "products"
        ]
      },
      "messaging__GetBusinessCatalogResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__BusinessCatalogPage"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CreateBusinessCatalogResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "object",
            "properties": {
              "success": {
                "type": "boolean",
                "enum": [
                  true
                ],
                "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
              }
            },
            "required": [
              "success"
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__SetBusinessCartEnabledResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "object",
            "properties": {
              "success": {
                "type": "boolean",
                "enum": [
                  true
                ],
                "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
              }
            },
            "required": [
              "success"
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__BusinessCartSettingRequest": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          }
        },
        "required": [
          "enabled"
        ],
        "additionalProperties": false
      },
      "messaging__GetBusinessProductResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__BusinessProduct"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CreateBusinessProductResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__BusinessProduct"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__BusinessProductMutationRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
          },
          "description": {
            "type": "string",
            "maxLength": 4096,
            "description": "Human-readable description of this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `4096` characters |"
          },
          "currency": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "description": "ISO 4217 currency code.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Z]{3}$` |"
          },
          "price": {
            "type": "string",
            "pattern": "^\\d{1,18}$",
            "description": "Price as a digit string in thousandths of the declared currency unit.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\d{1,18}$` |"
          },
          "salePrice": {
            "type": "string",
            "pattern": "^\\d{1,18}$",
            "description": "Optional discounted price as a digit string in thousandths of the declared currency unit.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\d{1,18}$` |"
          },
          "url": {
            "type": "string",
            "maxLength": 2048,
            "format": "uri",
            "description": "URL associated with this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `2048` characters |\n| Format | `uri` |"
          },
          "retailerId": {
            "type": "string",
            "maxLength": 256,
            "description": "Merchant-defined identifier for the catalog item.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |"
          },
          "hidden": {
            "type": "boolean",
            "description": "Whether this resource is hidden from ordinary listings."
          },
          "images": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "maxLength": 4096,
                  "format": "uri",
                  "description": "HTTPS image source fetched through Polymorfa's SSRF-safe downloader\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `4096` characters |\n| Format | `uri` |"
                },
                "base64": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 22369624,
                  "description": "Base64-encoded content with no data-URL prefix.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `22369624` characters |"
                },
                "mediaUrl": {
                  "type": "string",
                  "maxLength": 4096,
                  "format": "uri",
                  "description": "Already-uploaded WhatsApp or Meta media URL reused without downloading\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `4096` characters |\n| Format | `uri` |"
                }
              },
              "additionalProperties": false
            },
            "minItems": 1,
            "maxItems": 10,
            "description": "Images attached to or representing this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `10` items |"
          },
          "videoUrls": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 4096,
              "format": "uri"
            },
            "maxItems": 10,
            "description": "Video urls associated with this messaging business product mutation request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `10` items |\n| Item string length | At most `4096` characters |\n| Item format | `uri` |"
          },
          "complianceCategory": {
            "type": "string",
            "maxLength": 128,
            "description": "Specifies compliance category for this messaging business product mutation request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `128` characters |"
          },
          "compliance": {
            "type": "object",
            "properties": {
              "countryCodeOrigin": {
                "type": "string",
                "maxLength": 3,
                "description": "ISO 3166-1 alpha-2 country code where the product originated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `3` characters |"
              },
              "importerName": {
                "type": "string",
                "maxLength": 256,
                "description": "Name of the product importer declared for compliance.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |"
              },
              "importerAddress": {
                "type": "object",
                "properties": {
                  "street1": {
                    "type": "string",
                    "maxLength": 512,
                    "description": "Specifies street1 for this importer address.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `512` characters |"
                  },
                  "street2": {
                    "type": "string",
                    "maxLength": 512,
                    "description": "Specifies street2 for this importer address.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `512` characters |"
                  },
                  "city": {
                    "type": "string",
                    "maxLength": 256,
                    "description": "Specifies city for this importer address.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |"
                  },
                  "region": {
                    "type": "string",
                    "maxLength": 256,
                    "description": "Specifies region for this importer address.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |"
                  },
                  "postalCode": {
                    "type": "string",
                    "maxLength": 64,
                    "description": "Machine-readable postal code for this importer address.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `64` characters |"
                  },
                  "countryCode": {
                    "type": "string",
                    "maxLength": 3,
                    "description": "ISO 3166-1 alpha-2 country code.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `3` characters |"
                  }
                },
                "additionalProperties": false,
                "description": "Structured importer address values for this compliance."
              }
            },
            "additionalProperties": false,
            "description": "Structured compliance values for this messaging business product mutation request."
          },
          "width": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1024,
            "description": "Width in pixels.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `1024` (inclusive) |"
          },
          "height": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1024,
            "description": "Height in pixels.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `1024` (inclusive) |"
          }
        },
        "required": [
          "name",
          "images"
        ],
        "additionalProperties": false
      },
      "messaging__UpdateBusinessProductResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__BusinessProduct"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__DeleteBusinessProductResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "object",
            "properties": {
              "deletedCount": {
                "type": "integer",
                "minimum": 0,
                "description": "Number of deleteds.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              }
            },
            "required": [
              "deletedCount"
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__SetBusinessProductVisibilityResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "object",
            "properties": {
              "success": {
                "type": "boolean",
                "enum": [
                  true
                ],
                "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
              }
            },
            "required": [
              "success"
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__BusinessProductVisibilityRequest": {
        "type": "object",
        "properties": {
          "hidden": {
            "type": "boolean",
            "description": "Whether this resource is hidden from ordinary listings."
          }
        },
        "required": [
          "hidden"
        ],
        "additionalProperties": false
      },
      "messaging__AppealBusinessProductResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "object",
            "properties": {
              "success": {
                "type": "boolean",
                "enum": [
                  true
                ],
                "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
              }
            },
            "required": [
              "success"
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__BusinessCatalogAppealRequest": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4096,
            "description": "Reason for the reported state or outcome.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `4096` characters |"
          }
        },
        "required": [
          "reason"
        ],
        "additionalProperties": false
      },
      "messaging__BusinessCollection": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier for this resource."
          },
          "name": {
            "type": "string",
            "description": "Human-readable name for this resource."
          },
          "products": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__BusinessProduct"
            },
            "description": "Products returned by this operation."
          },
          "status": {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "description": "Current status of this resource or operation."
              },
              "canAppeal": {
                "type": "boolean",
                "description": "Whether appeal."
              },
              "commerceUrl": {
                "type": "string",
                "format": "uri",
                "description": "URL for the commerce.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
              },
              "rejectReason": {
                "type": "string",
                "description": "Reason the submitted resource was rejected."
              }
            },
            "required": [
              "canAppeal"
            ],
            "description": "Structured status details for this messaging business collection."
          }
        },
        "required": [
          "id",
          "name",
          "products",
          "status"
        ]
      },
      "messaging__BusinessCollectionPage": {
        "type": "object",
        "properties": {
          "next": {
            "type": "string",
            "description": "Specifies next for this messaging business collection page."
          },
          "collections": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__BusinessCollection"
            },
            "description": "Collections associated with this messaging business collection page."
          }
        },
        "required": [
          "collections"
        ]
      },
      "messaging__GetBusinessCollectionsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__BusinessCollectionPage"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CreateBusinessCollectionResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Identifier for this resource."
              },
              "reviewStatus": {
                "type": "string",
                "description": "Specifies review status for this data."
              }
            },
            "required": [
              "id",
              "reviewStatus"
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__BusinessCollectionCreateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
          },
          "productIds": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "minItems": 1,
            "maxItems": 100,
            "description": "Identifiers of the products included in this section.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `100` items |\n| Item string length | `1` through `256` characters |"
          }
        },
        "required": [
          "name",
          "productIds"
        ],
        "additionalProperties": false
      },
      "messaging__GetBusinessCollectionResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__BusinessCollection"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__ReorderBusinessCollectionsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "object",
            "properties": {
              "success": {
                "type": "boolean",
                "enum": [
                  true
                ],
                "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
              }
            },
            "required": [
              "success"
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__BusinessCollectionReorderRequest": {
        "type": "object",
        "properties": {
          "moves": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "collectionId": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 256,
                  "description": "Identifier for the collection.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
                },
                "fromIndex": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 99,
                  "description": "Specifies from index for this move.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `99` (inclusive) |"
                },
                "toIndex": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 99,
                  "description": "Specifies to index for this move.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `99` (inclusive) |"
                }
              },
              "required": [
                "collectionId",
                "fromIndex",
                "toIndex"
              ],
              "additionalProperties": false
            },
            "minItems": 1,
            "maxItems": 100,
            "description": "Moves associated with this messaging business collection reorder request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `100` items |"
          }
        },
        "required": [
          "moves"
        ],
        "additionalProperties": false
      },
      "messaging__UpdateBusinessCollectionResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Identifier for this resource."
              },
              "reviewStatus": {
                "type": "string",
                "description": "Specifies review status for this data."
              }
            },
            "required": [
              "id",
              "reviewStatus"
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__BusinessCollectionUpdateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
          },
          "addProductIds": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "minItems": 0,
            "maxItems": 100,
            "description": "Add product ids associated with this messaging business collection update request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `0` through `100` items |\n| Item string length | `1` through `256` characters |"
          },
          "removeProductIds": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "minItems": 0,
            "maxItems": 100,
            "description": "Remove product ids associated with this messaging business collection update request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `0` through `100` items |\n| Item string length | `1` through `256` characters |"
          }
        },
        "additionalProperties": false
      },
      "messaging__DeleteBusinessCollectionResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "object",
            "properties": {
              "success": {
                "type": "boolean",
                "enum": [
                  true
                ],
                "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
              }
            },
            "required": [
              "success"
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__AppealBusinessCollectionResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "object",
            "properties": {
              "success": {
                "type": "boolean",
                "enum": [
                  true
                ],
                "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
              }
            },
            "required": [
              "success"
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__BusinessOrder": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier for this resource."
          },
          "createdAt": {
            "type": "integer",
            "minimum": 0,
            "description": "Unix timestamp in seconds when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "catalogId": {
            "type": "string",
            "description": "Identifier of the WhatsApp catalog."
          },
          "price": {
            "type": "object",
            "properties": {
              "subtotal": {
                "type": "string",
                "description": "Order subtotal as a digit string in thousandths of the declared currency unit."
              },
              "total": {
                "type": "string",
                "description": "Order total as a digit string in thousandths of the declared currency unit."
              },
              "currency": {
                "type": "string",
                "description": "ISO 4217 currency code."
              },
              "priceStatus": {
                "type": "string",
                "description": "Status of price calculation for this order."
              }
            },
            "required": [
              "subtotal",
              "total",
              "currency"
            ],
            "description": "Structured price details for this messaging business order."
          },
          "products": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Identifier for this resource."
                },
                "imageId": {
                  "type": "string",
                  "description": "Identifier for the image."
                },
                "imageUrl": {
                  "type": "string",
                  "format": "uri",
                  "description": "URL for the image.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
                },
                "price": {
                  "type": "string",
                  "description": "Price as a digit string in thousandths of the declared currency unit."
                },
                "currency": {
                  "type": "string",
                  "description": "ISO 4217 currency code."
                },
                "name": {
                  "type": "string",
                  "description": "Human-readable name for this resource."
                },
                "quantity": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Number of units included for this item.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "variantProperties": {
                  "type": "string",
                  "description": "Product variant attributes selected for this order item."
                }
              },
              "required": [
                "id",
                "price",
                "currency",
                "name",
                "quantity"
              ]
            },
            "description": "Products returned by this operation."
          }
        },
        "required": [
          "id",
          "createdAt",
          "price",
          "products"
        ]
      },
      "messaging__GetBusinessOrderResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__BusinessOrder"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__BusinessOrderLookupRequest": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "minLength": 1,
            "maxLength": 8192,
            "description": "Opaque token required by the target operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `8192` characters |"
          }
        },
        "required": [
          "token"
        ]
      },
      "messaging__ResolveIdentityResult": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "phoneNumber": {
            "type": "string",
            "description": "Phone number in international format."
          },
          "bsuid": {
            "type": "string",
            "description": "Business-scoped user identifier (BSUID), scoped to the owning business portfolio."
          },
          "username": {
            "type": "string",
            "description": "WhatsApp username when one is available."
          },
          "keyRequired": {
            "type": "boolean",
            "description": "Whether key required."
          }
        }
      },
      "messaging__ResolveIdentityResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ResolveIdentityResult"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__UserSecurityCode": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          },
          "phoneNumber": {
            "type": "string",
            "description": "Phone number in international format."
          },
          "username": {
            "type": "string",
            "description": "WhatsApp username when one is available."
          },
          "numericCode": {
            "type": "string",
            "pattern": "^\\d{60}$",
            "description": "Machine-readable numeric code for this messaging user security code.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\d{60}$` |"
          },
          "qrCode": {
            "type": "string",
            "description": "Machine-readable qr code for this messaging user security code."
          }
        },
        "required": [
          "id",
          "numericCode",
          "qrCode"
        ]
      },
      "messaging__UserSecurityCodeResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__UserSecurityCode"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__Channel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier for this resource."
          },
          "name": {
            "type": "string",
            "description": "Human-readable name for this resource."
          },
          "description": {
            "type": "string",
            "description": "Human-readable description of this resource."
          },
          "profileUrl": {
            "type": "string",
            "description": "URL for the profile."
          },
          "followers": {
            "type": "number",
            "description": "Specifies followers for this messaging channel."
          },
          "muted": {
            "type": "boolean",
            "description": "Whether notifications are muted."
          },
          "preview": {
            "type": "boolean",
            "description": "Whether preview."
          }
        }
      },
      "messaging__ListChannelsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__Channel"
            },
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CreateChannelResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__Channel"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CreateChannelRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          },
          "description": {
            "type": "string",
            "description": "Human-readable description of this resource."
          },
          "picture": {
            "type": "string",
            "description": "Specifies picture for this messaging create channel request."
          }
        },
        "required": [
          "name"
        ]
      },
      "messaging__GetChannelResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__Channel"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__ChannelMessage": {
        "type": "object",
        "properties": {
          "position": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "description": "Channel ordering position. Use this value for before and after pagination cursors, not as a message ID.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | Greater than `0` and at most `9007199254740991` |"
          },
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Opaque Polymorfa resource ID. Keep this value as a string.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "whatsapp_ids": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__WhatsAppMessageIds"
              }
            ],
            "description": "Exact observed provider references under linked_devices, official_api, or both. Use the Polymorfa id for message actions.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `linked_devices` |\n| Alternative 2 | Type: `object`; Required fields: `official_api` |"
          },
          "whatsapp_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "Temporary singular provider reference for older consumers. Use whatsapp_ids for transport-specific references.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `512` characters |",
            "deprecated": true
          },
          "conversation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ConversationIdentity"
              }
            ],
            "description": "Public conversation identifier or E.164 phone number."
          },
          "type": {
            "type": "string",
            "description": "Type discriminator for this object."
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp associated with this event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "views": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies views for this messaging channel message.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "reactionCounts": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "minimum": 0
            },
            "description": "Structured reaction counts values for this messaging channel message."
          },
          "text": {
            "type": "string",
            "description": "Text content carried by this object."
          }
        },
        "required": [
          "position",
          "id",
          "whatsapp_ids",
          "conversation",
          "type",
          "timestamp",
          "views",
          "reactionCounts"
        ]
      },
      "messaging__ListChannelMessagesResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__ChannelMessage"
            },
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__ListChannelMessageUpdatesResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__ChannelMessage"
            },
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__ChannelReactionRequest": {
        "type": "object",
        "properties": {
          "reaction": {
            "type": "string",
            "maxLength": 32,
            "description": "Reaction applied to the referenced message.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `32` characters |"
          }
        },
        "required": [
          "reaction"
        ]
      },
      "messaging__ChannelLiveUpdates": {
        "type": "object",
        "properties": {
          "durationSeconds": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "description": "Duration in seconds.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | Greater than `0` |"
          }
        },
        "required": [
          "durationSeconds"
        ]
      },
      "messaging__ChannelLiveUpdatesResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ChannelLiveUpdates"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__DeleteChannelResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "DELETED"
                ],
                "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `DELETED` | Deleted. |"
              }
            },
            "required": [
              "status"
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__SetPresenceRequest": {
        "type": "object",
        "properties": {
          "presence": {
            "type": "string",
            "enum": [
              "available",
              "unavailable"
            ],
            "description": "Specifies presence for this messaging set presence request.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `available` | Available. |\n| `unavailable` | Unavailable. |"
          }
        },
        "required": [
          "presence"
        ]
      },
      "messaging__PresenceData": {
        "type": "object",
        "properties": {
          "desired": {
            "type": "string",
            "enum": [
              "available",
              "unavailable"
            ],
            "description": "Specifies desired for this messaging presence data.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `available` | Available. |\n| `unavailable` | Unavailable. |"
          },
          "desiredAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for desired at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "lastSent": {
            "type": "string",
            "enum": [
              "available",
              "unavailable"
            ],
            "description": "Specifies last sent for this messaging presence data.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `available` | Available. |\n| `unavailable` | Unavailable. |"
          },
          "lastSentAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for last sent at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "authoritative": {
            "type": "boolean",
            "enum": [
              false
            ],
            "description": "Whether authoritative.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `false` | False. |"
          }
        },
        "required": [
          "authoritative"
        ]
      },
      "messaging__GetPresenceResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__PresenceData"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__ChatPresenceData": {
        "type": "object",
        "properties": {
          "policy": {
            "type": "string",
            "enum": [
              "off",
              "events",
              "cache"
            ],
            "description": "Specifies policy for this messaging chat presence data.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
          },
          "status": {
            "type": "string",
            "enum": [
              "unknown",
              "fresh",
              "stale"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `unknown` | Unknown. |\n| `fresh` | Fresh. |\n| `stale` | Stale. |"
          },
          "unknownReason": {
            "type": "string",
            "enum": [
              "disabled",
              "not_observed",
              "suspended"
            ],
            "description": "Reason the value could not be classified.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `disabled` | Disabled. |\n| `not_observed` | Not observed. |\n| `suspended` | Suspended. |"
          },
          "available": {
            "type": "boolean",
            "description": "Whether the observed contact is available according to the latest presence state."
          },
          "lastSeen": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when the observed contact was last seen.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "observedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when Polymorfa observed this state.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "subscriptionExpiresAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when the presence subscription expires.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "stale": {
            "type": "boolean",
            "description": "Whether stale."
          },
          "typingPolicy": {
            "type": "string",
            "enum": [
              "off",
              "events",
              "cache"
            ],
            "description": "Specifies typing policy for this messaging chat presence data.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
          },
          "typingStatus": {
            "type": "string",
            "enum": [
              "unknown",
              "fresh",
              "stale"
            ],
            "description": "Specifies typing status for this messaging chat presence data.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `unknown` | Unknown. |\n| `fresh` | Fresh. |\n| `stale` | Stale. |"
          },
          "typingUnknownReason": {
            "type": "string",
            "enum": [
              "disabled",
              "not_observed",
              "suspended"
            ],
            "description": "Specifies typing unknown reason for this messaging chat presence data.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `disabled` | Disabled. |\n| `not_observed` | Not observed. |\n| `suspended` | Suspended. |"
          },
          "chatState": {
            "type": "object",
            "properties": {
              "sender": {
                "type": "string",
                "description": "Stable identifier for the user whose chat state was observed."
              },
              "state": {
                "type": "string",
                "enum": [
                  "composing",
                  "paused"
                ],
                "description": "Latest composing or paused state observed for the chat.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `composing` | Composing. |\n| `paused` | Paused. |"
              },
              "media": {
                "type": "string",
                "description": "Chat presence media category reported while composing or recording, such as audio."
              },
              "observedAt": {
                "type": "string",
                "format": "date-time",
                "description": "ISO 8601 timestamp when Polymorfa observed this state.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
              },
              "stale": {
                "type": "boolean",
                "description": "Whether stale."
              }
            },
            "required": [
              "sender",
              "state",
              "observedAt",
              "stale"
            ],
            "description": "Structured chat state values for this messaging chat presence data."
          }
        },
        "required": [
          "policy",
          "status",
          "stale",
          "typingPolicy",
          "typingStatus"
        ]
      },
      "messaging__GetChatPresenceResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ChatPresenceData"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__PresenceSubscriptionData": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "SUBSCRIBED"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `SUBSCRIBED` | Subscribed. |"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource expires.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "status",
          "expiresAt"
        ]
      },
      "messaging__SubscribePresenceResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__PresenceSubscriptionData"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__ProjectSafeMode": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "ceiling": {
            "type": "object",
            "properties": {
              "presence": {
                "type": "string",
                "enum": [
                  "dark",
                  "online_while_sending",
                  "online_hours"
                ],
                "description": "Specifies presence for this ceiling.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `dark` | Dark. |\n| `online_while_sending` | Online while sending. |\n| `online_hours` | Online hours. |"
              },
              "typing": {
                "type": "string",
                "enum": [
                  "off",
                  "before_text",
                  "before_all"
                ],
                "description": "Specifies typing for this ceiling.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `before_text` | Before text. |\n| `before_all` | Before all. |"
              },
              "reads": {
                "type": "string",
                "enum": [
                  "off",
                  "replied_chats",
                  "all_inbound"
                ],
                "description": "Specifies reads for this ceiling.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `replied_chats` | Replied chats. |\n| `all_inbound` | All inbound. |"
              },
              "pacing": {
                "type": "string",
                "enum": [
                  "off",
                  "jittered",
                  "conversation"
                ],
                "description": "Specifies pacing for this ceiling.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `jittered` | Jittered. |\n| `conversation` | Conversation. |"
              },
              "onlineStart": {
                "type": "integer",
                "minimum": 0,
                "maximum": 23,
                "description": "Specifies online start for this ceiling.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `23` (inclusive) |"
              },
              "onlineEnd": {
                "type": "integer",
                "minimum": 0,
                "maximum": 23,
                "description": "Specifies online end for this ceiling.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `23` (inclusive) |"
              }
            },
            "required": [
              "presence",
              "typing",
              "reads",
              "pacing",
              "onlineStart",
              "onlineEnd"
            ],
            "description": "Structured ceiling values for this messaging project safe mode."
          },
          "entitled": {
            "type": "boolean",
            "description": "Whether entitled."
          },
          "entitlementReason": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies entitlement reason for this messaging project safe mode.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "projectId",
          "ceiling",
          "entitled",
          "entitlementReason"
        ]
      },
      "messaging__GetProjectSafeModeResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ProjectSafeMode"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__UpdateProjectSafeModeResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ProjectSafeMode"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__SessionSafeMode": {
        "type": "object",
        "properties": {
          "session": {
            "type": "string",
            "description": "Identifier of the connected Polymorfa session."
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "project": {
            "type": "object",
            "properties": {
              "presence": {
                "type": "string",
                "enum": [
                  "dark",
                  "online_while_sending",
                  "online_hours"
                ],
                "description": "Specifies presence for this project.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `dark` | Dark. |\n| `online_while_sending` | Online while sending. |\n| `online_hours` | Online hours. |"
              },
              "typing": {
                "type": "string",
                "enum": [
                  "off",
                  "before_text",
                  "before_all"
                ],
                "description": "Specifies typing for this project.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `before_text` | Before text. |\n| `before_all` | Before all. |"
              },
              "reads": {
                "type": "string",
                "enum": [
                  "off",
                  "replied_chats",
                  "all_inbound"
                ],
                "description": "Specifies reads for this project.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `replied_chats` | Replied chats. |\n| `all_inbound` | All inbound. |"
              },
              "pacing": {
                "type": "string",
                "enum": [
                  "off",
                  "jittered",
                  "conversation"
                ],
                "description": "Specifies pacing for this project.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `jittered` | Jittered. |\n| `conversation` | Conversation. |"
              },
              "onlineStart": {
                "type": "integer",
                "minimum": 0,
                "maximum": 23,
                "description": "Specifies online start for this project.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `23` (inclusive) |"
              },
              "onlineEnd": {
                "type": "integer",
                "minimum": 0,
                "maximum": 23,
                "description": "Specifies online end for this project.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `23` (inclusive) |"
              }
            },
            "required": [
              "presence",
              "typing",
              "reads",
              "pacing",
              "onlineStart",
              "onlineEnd"
            ],
            "description": "Structured project values for this messaging session safe mode."
          },
          "override": {
            "type": "object",
            "properties": {
              "presence": {
                "type": "string",
                "enum": [
                  "inherit",
                  "dark",
                  "online_while_sending",
                  "online_hours"
                ],
                "description": "Specifies presence for this override.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inherit` | Inherit. |\n| `dark` | Dark. |\n| `online_while_sending` | Online while sending. |\n| `online_hours` | Online hours. |"
              },
              "typing": {
                "type": "string",
                "enum": [
                  "inherit",
                  "off",
                  "before_text",
                  "before_all"
                ],
                "description": "Specifies typing for this override.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inherit` | Inherit. |\n| `off` | Off. |\n| `before_text` | Before text. |\n| `before_all` | Before all. |"
              },
              "reads": {
                "type": "string",
                "enum": [
                  "inherit",
                  "off",
                  "replied_chats",
                  "all_inbound"
                ],
                "description": "Specifies reads for this override.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inherit` | Inherit. |\n| `off` | Off. |\n| `replied_chats` | Replied chats. |\n| `all_inbound` | All inbound. |"
              },
              "pacing": {
                "type": "string",
                "enum": [
                  "inherit",
                  "off",
                  "jittered",
                  "conversation"
                ],
                "description": "Specifies pacing for this override.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inherit` | Inherit. |\n| `off` | Off. |\n| `jittered` | Jittered. |\n| `conversation` | Conversation. |"
              }
            },
            "required": [
              "presence",
              "typing",
              "reads",
              "pacing"
            ],
            "description": "Structured override values for this messaging session safe mode."
          },
          "effective": {
            "type": "object",
            "properties": {
              "presence": {
                "type": "string",
                "enum": [
                  "dark",
                  "online_while_sending",
                  "online_hours"
                ],
                "description": "Specifies presence for this effective.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `dark` | Dark. |\n| `online_while_sending` | Online while sending. |\n| `online_hours` | Online hours. |"
              },
              "typing": {
                "type": "string",
                "enum": [
                  "off",
                  "before_text",
                  "before_all"
                ],
                "description": "Specifies typing for this effective.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `before_text` | Before text. |\n| `before_all` | Before all. |"
              },
              "reads": {
                "type": "string",
                "enum": [
                  "off",
                  "replied_chats",
                  "all_inbound"
                ],
                "description": "Specifies reads for this effective.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `replied_chats` | Replied chats. |\n| `all_inbound` | All inbound. |"
              },
              "pacing": {
                "type": "string",
                "enum": [
                  "off",
                  "jittered",
                  "conversation"
                ],
                "description": "Specifies pacing for this effective.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `jittered` | Jittered. |\n| `conversation` | Conversation. |"
              },
              "onlineStart": {
                "type": "integer",
                "minimum": 0,
                "maximum": 23,
                "description": "Specifies online start for this effective.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `23` (inclusive) |"
              },
              "onlineEnd": {
                "type": "integer",
                "minimum": 0,
                "maximum": 23,
                "description": "Specifies online end for this effective.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `23` (inclusive) |"
              }
            },
            "required": [
              "presence",
              "typing",
              "reads",
              "pacing",
              "onlineStart",
              "onlineEnd"
            ],
            "description": "Structured effective values for this messaging session safe mode."
          },
          "applied": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "observedAt": {
                "type": "string",
                "description": "ISO 8601 timestamp when Polymorfa observed this state."
              },
              "presence": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Specifies presence for this applied.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
              },
              "typing": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Specifies typing for this applied.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
              },
              "reads": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Specifies reads for this applied.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
              },
              "pacing": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Specifies pacing for this applied.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
              }
            },
            "required": [
              "observedAt",
              "presence",
              "typing",
              "reads",
              "pacing"
            ],
            "description": "Structured applied values for this messaging session safe mode.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `observedAt`, `presence`, `typing`, `reads`, `pacing` |\n| Alternative 2 | `null` |"
          },
          "mismatch": {
            "type": "boolean",
            "description": "Whether mismatch."
          },
          "entitled": {
            "type": "boolean",
            "description": "Whether entitled."
          },
          "entitlementReason": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies entitlement reason for this messaging session safe mode.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "session",
          "projectId",
          "project",
          "override",
          "effective",
          "applied",
          "mismatch",
          "entitled",
          "entitlementReason"
        ]
      },
      "messaging__GetSessionSafeModeResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__SessionSafeMode"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__UpdateSessionSafeModeResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__SessionSafeMode"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__ProjectWarmupPlan": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "plan": {
            "type": "object",
            "properties": {
              "enabled": {
                "type": "boolean",
                "description": "Whether this feature is enabled."
              },
              "warmupDays": {
                "type": "integer",
                "minimum": 1,
                "maximum": 90,
                "description": "Specifies warmup days for this plan.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `90` (inclusive) |"
              },
              "dailyStart": {
                "type": "integer",
                "minimum": 1,
                "maximum": 2000,
                "description": "Specifies daily start for this plan.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `2000` (inclusive) |"
              }
            },
            "required": [
              "enabled",
              "warmupDays",
              "dailyStart"
            ],
            "description": "Structured plan values for this messaging project warmup plan."
          },
          "ceiling": {
            "type": "integer",
            "minimum": 1,
            "description": "Specifies ceiling for this messaging project warmup plan.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
          },
          "curve": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "day": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies day for this curve.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "allowance": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies allowance for this curve.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                }
              },
              "required": [
                "day",
                "allowance"
              ]
            },
            "maxItems": 91,
            "description": "Curve associated with this messaging project warmup plan.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `91` items |"
          },
          "entitled": {
            "type": "boolean",
            "description": "Whether entitled."
          },
          "entitlementReason": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies entitlement reason for this messaging project warmup plan.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "projectId",
          "plan",
          "ceiling",
          "curve",
          "entitled",
          "entitlementReason"
        ]
      },
      "messaging__GetProjectWarmupPlanResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ProjectWarmupPlan"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__UpdateProjectWarmupPlanResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ProjectWarmupPlan"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__ProjectHealthPolicy": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "version": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies version for this messaging project health policy.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          },
          "threshold": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100,
            "description": "Specifies threshold for this messaging project health policy.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `100` (inclusive) |"
          },
          "sessionAction": {
            "type": "string",
            "enum": [
              "none",
              "stop",
              "slow_down",
              "log_out"
            ],
            "description": "Specifies session action for this messaging project health policy.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `stop` | Stop. |\n| `slow_down` | Slow down. |\n| `log_out` | Log out. |"
          },
          "slowDownMps": {
            "type": [
              "number",
              "null"
            ],
            "exclusiveMinimum": 0,
            "description": "Specifies slow down mps for this messaging project health policy.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: Greater than `0` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | Greater than `0` |"
          },
          "emailNotification": {
            "type": "boolean",
            "description": "Whether email notification."
          },
          "webhookNotification": {
            "type": "boolean",
            "description": "Whether webhook notification."
          },
          "integrations": {
            "type": "object",
            "properties": {
              "emailConfigured": {
                "type": "boolean",
                "description": "Whether email configured."
              },
              "webhookConfigured": {
                "type": "boolean",
                "description": "Whether webhook configured."
              }
            },
            "required": [
              "emailConfigured",
              "webhookConfigured"
            ],
            "description": "Structured integrations values for this messaging project health policy."
          }
        },
        "required": [
          "projectId",
          "version",
          "enabled",
          "threshold",
          "sessionAction",
          "slowDownMps",
          "emailNotification",
          "webhookNotification",
          "integrations"
        ]
      },
      "messaging__GetProjectHealthPolicyResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ProjectHealthPolicy"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__UpdateProjectHealthPolicyResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ProjectHealthPolicy"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__UpdateProjectHealthPolicyInput": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies version for this messaging update project health policy input.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          },
          "threshold": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100,
            "description": "Specifies threshold for this messaging update project health policy input.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `100` (inclusive) |"
          },
          "sessionAction": {
            "type": "string",
            "enum": [
              "none",
              "stop",
              "slow_down",
              "log_out"
            ],
            "description": "Specifies session action for this messaging update project health policy input.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `stop` | Stop. |\n| `slow_down` | Slow down. |\n| `log_out` | Log out. |"
          },
          "slowDownMps": {
            "type": [
              "number",
              "null"
            ],
            "exclusiveMinimum": 0,
            "description": "Specifies slow down mps for this messaging update project health policy input.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: Greater than `0` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | Greater than `0` |"
          },
          "emailNotification": {
            "type": "boolean",
            "description": "Whether email notification."
          },
          "webhookNotification": {
            "type": "boolean",
            "description": "Whether webhook notification."
          }
        },
        "required": [
          "version",
          "enabled",
          "threshold",
          "sessionAction",
          "slowDownMps",
          "emailNotification",
          "webhookNotification"
        ],
        "additionalProperties": false
      },
      "messaging__ProjectInsuranceEvidence": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          },
          "banInsuranceIncluded": {
            "type": "boolean",
            "description": "Whether ban insurance included."
          }
        },
        "required": [
          "projectId",
          "enabled",
          "banInsuranceIncluded"
        ]
      },
      "messaging__GetProjectInsuranceEvidenceResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ProjectInsuranceEvidence"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__UpdateProjectInsuranceEvidenceResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ProjectInsuranceEvidence"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__ProjectObservationPolicy": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "presenceMode": {
            "type": "string",
            "enum": [
              "off",
              "events",
              "cache"
            ],
            "description": "Behavior selected for presence.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
          },
          "typingMode": {
            "type": "string",
            "enum": [
              "off",
              "events",
              "cache"
            ],
            "description": "Behavior selected for typing.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
          },
          "labelMode": {
            "type": "string",
            "enum": [
              "off",
              "events",
              "cache",
              "project"
            ],
            "description": "Behavior selected for label.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |\n| `project` | Project. |"
          },
          "quickReplyMode": {
            "type": "string",
            "enum": [
              "off",
              "events",
              "cache"
            ],
            "description": "Behavior selected for quick reply.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
          }
        },
        "required": [
          "projectId",
          "presenceMode",
          "typingMode",
          "labelMode",
          "quickReplyMode"
        ]
      },
      "messaging__GetProjectObservationPolicyResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ProjectObservationPolicy"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__SessionObservationPolicy": {
        "type": "object",
        "properties": {
          "sessionName": {
            "type": "string",
            "description": "Human-readable name assigned to the session."
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "project": {
            "type": "object",
            "properties": {
              "presenceMode": {
                "type": "string",
                "enum": [
                  "off",
                  "events",
                  "cache"
                ],
                "description": "Behavior selected for presence.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
              },
              "typingMode": {
                "type": "string",
                "enum": [
                  "off",
                  "events",
                  "cache"
                ],
                "description": "Behavior selected for typing.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
              },
              "labelMode": {
                "type": "string",
                "enum": [
                  "off",
                  "events",
                  "cache",
                  "project"
                ],
                "description": "Behavior selected for label.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |\n| `project` | Project. |"
              },
              "quickReplyMode": {
                "type": "string",
                "enum": [
                  "off",
                  "events",
                  "cache"
                ],
                "description": "Behavior selected for quick reply.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
              }
            },
            "required": [
              "presenceMode",
              "typingMode",
              "labelMode",
              "quickReplyMode"
            ],
            "description": "Structured project values for this messaging session observation policy."
          },
          "override": {
            "type": "object",
            "properties": {
              "presenceMode": {
                "type": "string",
                "enum": [
                  "inherit",
                  "off",
                  "events",
                  "cache"
                ],
                "description": "Behavior selected for presence.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inherit` | Inherit. |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
              },
              "typingMode": {
                "type": "string",
                "enum": [
                  "inherit",
                  "off",
                  "events",
                  "cache"
                ],
                "description": "Behavior selected for typing.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inherit` | Inherit. |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
              },
              "labelMode": {
                "type": "string",
                "enum": [
                  "inherit",
                  "off",
                  "events",
                  "cache",
                  "project"
                ],
                "description": "Behavior selected for label.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inherit` | Inherit. |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |\n| `project` | Project. |"
              },
              "quickReplyMode": {
                "type": "string",
                "enum": [
                  "inherit",
                  "off",
                  "events",
                  "cache"
                ],
                "description": "Behavior selected for quick reply.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inherit` | Inherit. |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
              }
            },
            "required": [
              "presenceMode",
              "typingMode",
              "labelMode",
              "quickReplyMode"
            ],
            "description": "Structured override values for this messaging session observation policy."
          },
          "effective": {
            "type": "object",
            "properties": {
              "presenceMode": {
                "type": "string",
                "enum": [
                  "off",
                  "events",
                  "cache"
                ],
                "description": "Behavior selected for presence.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
              },
              "typingMode": {
                "type": "string",
                "enum": [
                  "off",
                  "events",
                  "cache"
                ],
                "description": "Behavior selected for typing.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
              },
              "labelMode": {
                "type": "string",
                "enum": [
                  "off",
                  "events",
                  "cache",
                  "project"
                ],
                "description": "Behavior selected for label.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |\n| `project` | Project. |"
              },
              "quickReplyMode": {
                "type": "string",
                "enum": [
                  "off",
                  "events",
                  "cache"
                ],
                "description": "Behavior selected for quick reply.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
              }
            },
            "required": [
              "presenceMode",
              "typingMode",
              "labelMode",
              "quickReplyMode"
            ],
            "description": "Structured effective values for this messaging session observation policy."
          }
        },
        "required": [
          "sessionName",
          "projectId",
          "project",
          "override",
          "effective"
        ]
      },
      "messaging__GetSessionObservationPolicyResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__SessionObservationPolicy"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__ProfileData": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Human-readable name for this resource."
          },
          "status": {
            "type": "string",
            "description": "WhatsApp profile About text reported for this account or user."
          },
          "profilePicUrl": {
            "type": "string",
            "description": "URL of the account's profile picture."
          },
          "phonePlatform": {
            "type": "string",
            "enum": [
              "android",
              "ios",
              "meta_cloud",
              "unknown"
            ],
            "description": "Where the account's primary WhatsApp client runs.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `android` | WhatsApp or WhatsApp Business on an Android phone. |\n| `ios` | WhatsApp or WhatsApp Business on an iPhone. |\n| `meta_cloud` | Meta hosts the number through Cloud API. |\n| `unknown` | The phone has not reported a recognized platform. |"
          },
          "accountType": {
            "type": "string",
            "enum": [
              "whatsapp_app",
              "business_app",
              "meta_cloud",
              "meta_coexistence"
            ],
            "description": "How the account uses WhatsApp.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `whatsapp_app` | WhatsApp app, connected as a linked device. |\n| `business_app` | WhatsApp Business app, connected as a linked device. |\n| `meta_cloud` | Meta Cloud API. |\n| `meta_coexistence` | Meta Cloud API, with the WhatsApp Business app still active on the phone. |"
          }
        },
        "required": [
          "name",
          "status"
        ]
      },
      "messaging__GetProfileResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__ProfileData"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__SetProfileNameRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          }
        },
        "required": [
          "name"
        ]
      },
      "messaging__SetProfileStatusRequest": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "Profile About text to publish for the connected account."
          }
        },
        "required": [
          "status"
        ]
      },
      "messaging__SetProfilePictureRequest": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "URL associated with this resource."
          },
          "base64": {
            "type": "string",
            "description": "Base64-encoded content with no data-URL prefix."
          }
        }
      },
      "messaging__PrivacySettings": {
        "type": "object",
        "properties": {
          "groupAdd": {
            "type": "string",
            "description": "Specifies group add for this messaging privacy setting."
          },
          "lastSeen": {
            "type": "string",
            "description": "Specifies last seen for this messaging privacy setting."
          },
          "status": {
            "type": "string",
            "description": "Privacy audience allowed to view the account's status updates."
          },
          "profile": {
            "type": "string",
            "description": "Specifies profile for this messaging privacy setting."
          },
          "readReceipts": {
            "type": "string",
            "description": "Specifies read receipts for this messaging privacy setting."
          },
          "online": {
            "type": "string",
            "description": "Specifies online for this messaging privacy setting."
          },
          "callAdd": {
            "type": "string",
            "description": "Specifies call add for this messaging privacy setting."
          },
          "messages": {
            "type": "string",
            "description": "Specifies messages for this messaging privacy setting."
          },
          "defense": {
            "type": "string",
            "description": "Specifies defense for this messaging privacy setting."
          },
          "stickers": {
            "type": "string",
            "description": "Specifies stickers for this messaging privacy setting."
          }
        },
        "required": [
          "groupAdd",
          "lastSeen",
          "status",
          "profile",
          "readReceipts",
          "online",
          "callAdd",
          "messages",
          "defense",
          "stickers"
        ]
      },
      "messaging__PrivacySettingsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__PrivacySettings"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__DefaultDisappearingTimerRequest": {
        "type": "object",
        "properties": {
          "durationSeconds": {
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  0
                ]
              },
              {
                "type": "number",
                "enum": [
                  86400
                ]
              },
              {
                "type": "number",
                "enum": [
                  604800
                ]
              },
              {
                "type": "number",
                "enum": [
                  7776000
                ]
              }
            ],
            "description": "Duration in seconds.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Value `0` |\n| Alternative 2 | Type: `number`; Value `86400` |\n| Alternative 3 | Type: `number`; Value `604800` |\n| Alternative 4 | Type: `number`; Value `7776000` |"
          }
        },
        "required": [
          "durationSeconds"
        ]
      },
      "messaging__UpdatedPrivacySettingsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__PrivacySettings"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__SetPrivacySettingRequest": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "enum": [
              "all",
              "contacts",
              "contact_allowlist",
              "contact_blacklist",
              "match_last_seen",
              "known",
              "none",
              "on_standard",
              "off"
            ],
            "description": "Value assigned to this field.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `all` | All. |\n| `contacts` | Contacts. |\n| `contact_allowlist` | Contact allowlist. |\n| `contact_blacklist` | Contact blacklist. |\n| `match_last_seen` | Match last seen. |\n| `known` | Known. |\n| `none` | None. |\n| `on_standard` | On standard. |\n| `off` | Off. |"
          }
        },
        "required": [
          "value"
        ]
      },
      "messaging__Label": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier for this resource."
          },
          "name": {
            "type": "string",
            "description": "Human-readable name for this resource."
          },
          "color": {
            "type": "integer",
            "description": "Specifies color for this messaging label."
          },
          "orderIndex": {
            "type": "integer",
            "description": "Specifies order index for this messaging label."
          },
          "chatCount": {
            "type": "integer",
            "description": "Number of chats."
          },
          "observedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when Polymorfa observed this state.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "id",
          "name",
          "color"
        ]
      },
      "messaging__LabelCollection": {
        "type": "object",
        "properties": {
          "policy": {
            "type": "string",
            "enum": [
              "off",
              "events",
              "cache",
              "project"
            ],
            "description": "Specifies policy for this messaging label collection.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |\n| `project` | Project. |"
          },
          "status": {
            "type": "string",
            "enum": [
              "disabled",
              "unknown",
              "partial",
              "fresh"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `disabled` | Disabled. |\n| `unknown` | Unknown. |\n| `partial` | Partial. |\n| `fresh` | Fresh. |"
          },
          "unknownReason": {
            "type": "string",
            "enum": [
              "observation_disabled",
              "not_retained",
              "not_observed",
              "expired"
            ],
            "description": "Reason the value could not be classified.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `observation_disabled` | Observation disabled. |\n| `not_retained` | Not retained. |\n| `not_observed` | Not observed. |\n| `expired` | Expired. |"
          },
          "observedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when Polymorfa observed this state.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource expires.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "labels": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__Label"
            },
            "description": "Labels associated with this resource."
          }
        },
        "required": [
          "policy",
          "status",
          "labels"
        ]
      },
      "messaging__LabelReadData": {
        "anyOf": [
          {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__Label"
            }
          },
          {
            "$ref": "#/components/schemas/messaging__LabelCollection"
          }
        ]
      },
      "messaging__ListLabelsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__LabelReadData"
              }
            ],
            "description": "Structured data carried by this object.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `array` |\n| Alternative 2 | Type: `object`; Field `policy`: `off` or `events` or `cache` or `project`; Field `status`: `disabled` or `unknown` or `partial` or `fresh`; Field `unknownReason`: `observation_disabled` or `not_retained` or `not_observed` or `expired`; Required fields: `policy`, `status`, `labels` |"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CreateLabelResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__Label"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CreateLabelRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `100` characters |"
          },
          "color": {
            "type": "integer",
            "minimum": 0,
            "maximum": 19,
            "description": "Specifies color for this messaging create label request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `19` (inclusive) |"
          }
        },
        "required": [
          "name"
        ]
      },
      "messaging__UpdateLabelRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `100` characters |"
          },
          "color": {
            "type": "integer",
            "minimum": 0,
            "maximum": 19,
            "description": "Specifies color for this messaging update label request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `19` (inclusive) |"
          }
        }
      },
      "messaging__GetChatLabelsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__LabelReadData"
              }
            ],
            "description": "Structured data carried by this object.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `array` |\n| Alternative 2 | Type: `object`; Field `policy`: `off` or `events` or `cache` or `project`; Field `status`: `disabled` or `unknown` or `partial` or `fresh`; Field `unknownReason`: `observation_disabled` or `not_retained` or `not_observed` or `expired`; Required fields: `policy`, `status`, `labels` |"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__SetChatLabelsRequest": {
        "type": "object",
        "properties": {
          "labels": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "maxItems": 20,
            "description": "Labels associated with this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `20` items |\n| Item string length | `1` through `128` characters |"
          }
        },
        "required": [
          "labels"
        ]
      },
      "messaging__RetryConfig": {
        "type": "object",
        "properties": {
          "attempts": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies attempts for this messaging retry config.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "delaySeconds": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies delay seconds for this messaging retry config.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "policy": {
            "type": "string",
            "description": "linear, exponential, or constant"
          }
        },
        "required": [
          "attempts",
          "delaySeconds",
          "policy"
        ]
      },
      "messaging__WebhookHeader": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Human-readable name for this resource."
          },
          "value": {
            "type": "string",
            "description": "Value assigned to this field."
          }
        },
        "required": [
          "name",
          "value"
        ]
      },
      "messaging__Webhook": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier for this resource."
          },
          "tenantId": {
            "type": "string",
            "description": "Identifier of the organization that owns this resource."
          },
          "session": {
            "type": "string",
            "description": "Identifier of the connected Polymorfa session."
          },
          "url": {
            "type": "string",
            "description": "URL associated with this resource."
          },
          "events": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Events returned or subscribed to by this operation."
          },
          "retries": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__RetryConfig"
              }
            ],
            "description": "Retry policy applied after a failed delivery attempt."
          },
          "headers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__WebhookHeader"
            },
            "description": "HTTP headers attached to the outgoing request."
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          },
          "format": {
            "type": "string",
            "enum": [
              "native",
              "meta"
            ],
            "description": "Specifies format for this messaging webhook.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `native` | Native. |\n| `meta` | Meta. |"
          },
          "phoneOfflineStartDay": {
            "type": "integer",
            "minimum": 7,
            "maximum": 13,
            "description": "Specifies phone offline start day for this messaging webhook.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `7` through `13` (inclusive) |"
          },
          "createdAt": {
            "type": "string",
            "description": "ISO 8601 timestamp when this resource was created."
          }
        },
        "required": [
          "id",
          "tenantId",
          "url",
          "events",
          "retries",
          "headers",
          "enabled",
          "createdAt"
        ]
      },
      "messaging__ListWebhooksResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__Webhook"
            },
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CreateWebhookResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__Webhook"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CreateWebhookRequest": {
        "type": "object",
        "properties": {
          "session": {
            "type": "string",
            "description": "Identifier of the connected Polymorfa session."
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "URL associated with this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
          },
          "events": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Event types this webhook subscribes to."
          },
          "hmacKey": {
            "type": "string",
            "description": "HMAC key used to verify signed payloads."
          },
          "retries": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__RetryConfig"
              }
            ],
            "description": "Retry policy applied after a failed delivery attempt."
          },
          "headers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__WebhookHeader"
            },
            "description": "HTTP headers attached to the outgoing request."
          },
          "format": {
            "type": "string",
            "enum": [
              "native",
              "meta"
            ],
            "description": "\"native\" (default) = Polymorfa event envelope. \"meta\" = Meta Cloud API webhook shape (object/entry/changes/value), signed with X-Hub-Signature-256.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `native` | Native. |\n| `meta` | Meta. |"
          },
          "phoneOfflineStartDay": {
            "type": "integer",
            "minimum": 7,
            "maximum": 13,
            "description": "First day without the phone on which this webhook receives session.phone_offline. New webhooks default to 10; on update, omission keeps the stored value. WhatsApp signs the linked device out on day 14. To stop the warning, remove session.phone_offline from events.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `7` through `13` (inclusive) |"
          }
        },
        "required": [
          "url"
        ]
      },
      "messaging__GetWebhookResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__Webhook"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__UpdateWebhookResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__Webhook"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__UpdateWebhookRequest": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri",
            "description": "URL associated with this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
          },
          "events": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Event types this webhook subscribes to."
          },
          "hmacKey": {
            "type": "string",
            "description": "HMAC key used to verify signed payloads."
          },
          "retries": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__RetryConfig"
              }
            ],
            "description": "Retry policy applied after a failed delivery attempt."
          },
          "headers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__WebhookHeader"
            },
            "description": "HTTP headers attached to the outgoing request."
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          },
          "format": {
            "type": "string",
            "enum": [
              "native",
              "meta"
            ],
            "description": "Specifies format for this messaging update webhook request.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `native` | Native. |\n| `meta` | Meta. |"
          },
          "phoneOfflineStartDay": {
            "type": "integer",
            "minimum": 7,
            "maximum": 13,
            "description": "First day without the phone on which this webhook receives session.phone_offline. New webhooks default to 10; on update, omission keeps the stored value. WhatsApp signs the linked device out on day 14. To stop the warning, remove session.phone_offline from events.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `7` through `13` (inclusive) |"
          }
        }
      },
      "messaging__MediaInfo": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier for this resource."
          },
          "session": {
            "type": "string",
            "description": "Identifier of the connected Polymorfa session."
          },
          "messageId": {
            "type": "string",
            "description": "Polymorfa message ID. Use the Polymorfa message's `id` for actions and replies."
          },
          "mimeType": {
            "type": "string",
            "description": "IANA media type that matches the media payload.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Media type | IANA `type/subtype` value matching the payload, such as `image/jpeg`, `video/mp4`, `audio/ogg`, or `application/pdf` |"
          },
          "fileLength": {
            "type": "integer",
            "minimum": 0,
            "description": "Size of the media file in bytes.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "persisted": {
            "type": "boolean",
            "description": "Whether the media or record was stored durably."
          },
          "s3Url": {
            "type": "string",
            "description": "URL for the s3."
          }
        },
        "required": [
          "id",
          "session",
          "messageId",
          "mimeType",
          "fileLength",
          "persisted"
        ]
      },
      "messaging__GetMediaInfoResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__MediaInfo"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__MessageTemplate": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier for this resource."
          },
          "name": {
            "type": "string",
            "description": "Human-readable name for this resource."
          },
          "category": {
            "type": "string",
            "description": "Specifies category for this messaging message template."
          },
          "language": {
            "type": "string",
            "description": "Language or locale code used for this content."
          },
          "status": {
            "type": "string",
            "description": "Current status of this resource or operation."
          },
          "kind": {
            "type": "string",
            "description": "Kind discriminator for this object."
          },
          "definition": {
            "description": "Structured definition for this resource."
          },
          "sampleValues": {
            "description": "Example values used to preview this template field."
          },
          "cloudLinks": {
            "type": "array",
            "items": {},
            "description": "Cloud links associated with this messaging message template."
          },
          "createdAt": {
            "type": "number",
            "description": "Unix timestamp in milliseconds when this resource was created."
          },
          "updatedAt": {
            "type": "number",
            "description": "Unix timestamp in milliseconds when this resource was last updated."
          }
        },
        "required": [
          "id",
          "name",
          "category",
          "language",
          "status",
          "kind",
          "cloudLinks",
          "createdAt",
          "updatedAt"
        ]
      },
      "messaging__ListProjectTemplatesResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__MessageTemplate"
            },
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__GetProjectTemplateResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__MessageTemplate"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CreateProjectTemplateResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__MessageTemplate"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CreateMessageTemplateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "pattern": "^[a-z0-9_]+$",
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |\n| Pattern | `^[a-z0-9_]+$` |"
          },
          "definition": {
            "type": "object",
            "additionalProperties": {},
            "description": "Structured definition for this resource."
          },
          "sampleValues": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Example values used to preview this template field."
          }
        },
        "required": [
          "name",
          "definition"
        ]
      },
      "messaging__UpdateProjectTemplateResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__MessageTemplate"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__UpdateMessageTemplateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          },
          "status": {
            "type": "string",
            "description": "Status value to assign to this resource."
          },
          "definition": {
            "type": "object",
            "additionalProperties": {},
            "description": "Structured definition for this resource."
          },
          "sampleValues": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Example values used to preview this template field."
          }
        }
      },
      "messaging__PreviewProjectTemplateResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "object",
            "additionalProperties": {},
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__PreviewMessageTemplateRequest": {
        "type": "object",
        "properties": {
          "values": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Structured values values for this messaging preview message template request."
          },
          "surface": {
            "type": "string",
            "enum": [
              "cloud",
              "whatsmeow",
              "sandbox"
            ],
            "description": "Specifies surface for this messaging preview message template request.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `cloud` | Cloud. |\n| `whatsmeow` | Whatsmeow. |\n| `sandbox` | Sandbox. |"
          }
        }
      },
      "messaging__TemplateSubmission": {
        "type": "object",
        "properties": {
          "session": {
            "type": "string",
            "description": "Number the template was submitted for."
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "APPROVED"
            ],
            "description": "PENDING: sent to Meta for review. APPROVED: the number sends this template without Meta review.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `PENDING` | Pending. |\n| `APPROVED` | Approved. |"
          },
          "autoApproved": {
            "type": "boolean",
            "description": "True when the number does not need Meta approval (any number that is not a Cloud API number). Nothing was sent to Meta."
          },
          "metaTemplateId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Meta's template ID; null when auto-approved.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "session",
          "status",
          "autoApproved",
          "metaTemplateId"
        ]
      },
      "messaging__SubmitProjectTemplateResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__MessageTemplate"
              },
              {
                "type": "object",
                "properties": {
                  "submission": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/messaging__TemplateSubmission"
                      }
                    ],
                    "description": "Specifies submission for this all of."
                  }
                },
                "required": [
                  "submission"
                ]
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__SubmitMessageTemplateRequest": {
        "type": "object",
        "properties": {
          "session": {
            "type": "string",
            "minLength": 1,
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          }
        },
        "required": [
          "session"
        ]
      },
      "messaging__CampaignMessageVariationBlueprint": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "description": "Specifies version for this messaging campaign message variation blueprint."
          },
          "source": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4096,
            "description": "The message text, 1 to 4,096 characters. Every alternative must use the same `{{variable}}` placeholders and inline fallbacks.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `4096` characters |"
          }
        },
        "required": [
          "version",
          "source"
        ],
        "description": "The message this alternative sends, in the composed-message format."
      },
      "messaging__CampaignMessageVariation": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_-]{0,15}$",
            "description": "Identifier of the alternative, unique in the campaign: a lowercase letter, then up to 15 lowercase letters, digits, `_` or `-`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z][a-z0-9_-]{0,15}$` |",
            "example": "short"
          },
          "weight": {
            "type": "integer",
            "minimum": 1,
            "maximum": 99,
            "description": "Share of recipients who receive this alternative, in percent. The weights of all alternatives add up to 100.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `99` (inclusive) |",
            "example": 50
          },
          "blueprint": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignMessageVariationBlueprint"
              }
            ],
            "description": "Specifies blueprint for this messaging campaign message variation."
          }
        },
        "required": [
          "key",
          "weight",
          "blueprint"
        ],
        "additionalProperties": false
      },
      "messaging__CampaignVariantMessage": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "description": "Specifies version for this messaging campaign variant message."
          },
          "source": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4096,
            "description": "The message text, 1 to 4,096 characters. `{{variable}}` placeholders are filled per recipient, as in composed messages.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `4096` characters |",
            "example": "Hi {{first_name}}, your offer is ready."
          }
        },
        "required": [
          "version",
          "source"
        ],
        "description": "The message this variant sends, in the composed-message format."
      },
      "messaging__CampaignVariant": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_-]{0,15}$",
            "description": "Identifier of the variant, unique in the campaign: a lowercase letter, then up to 15 lowercase letters, digits, `_` or `-`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z][a-z0-9_-]{0,15}$` |",
            "example": "a"
          },
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "Name shown in results, 1 to 100 characters.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `100` characters |",
            "example": "Short intro"
          },
          "weight": {
            "type": "integer",
            "minimum": 1,
            "maximum": 99,
            "description": "Share of the test group that receives this variant, in percent. The weights of all variants add up to 100.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `99` (inclusive) |",
            "example": 50
          },
          "blueprint": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignVariantMessage"
              }
            ],
            "description": "Specifies blueprint for this messaging campaign variant."
          }
        },
        "required": [
          "key",
          "label",
          "weight",
          "blueprint"
        ],
        "additionalProperties": false
      },
      "messaging__CampaignVariantStrategy": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "winnerCriterion": {
            "type": "string",
            "enum": [
              "delivery",
              "read",
              "reply"
            ],
            "description": "The outcome that decides the winner: the share of sent test messages that were delivered, read or replied to by the test deadline.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `delivery` | Delivery. |\n| `read` | Read. |\n| `reply` | Reply. |"
          },
          "holdoutPercent": {
            "type": "integer",
            "minimum": 0,
            "maximum": 30,
            "description": "Percent of recipients, 0 to 30, who receive no message. They are marked `skipped` with `lastError` `experiment_holdout` at launch.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `30` (inclusive) |"
          },
          "testSlicePercent": {
            "type": "integer",
            "minimum": 5,
            "maximum": 50,
            "default": 20,
            "description": "Percent of recipients, 5 to 50, who receive a variant during the test. Defaults to 20. The rest, the reserve, wait for the winner.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `5` through `50` (inclusive) |"
          },
          "autoPromote": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Must be `true`: after the test window the winner is sent to the reserve automatically.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "testWindowMinutes": {
            "type": "integer",
            "minimum": 15,
            "maximum": 1440,
            "description": "Minutes from the start of sending until the test is decided, 15 to 1,440.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `15` through `1440` (inclusive) |"
          }
        },
        "required": [
          "winnerCriterion",
          "holdoutPercent",
          "autoPromote",
          "testWindowMinutes"
        ],
        "additionalProperties": false
      },
      "messaging__CampaignExperimentOutcome": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "state": {
            "type": "string",
            "enum": [
              "promoted",
              "inconclusive"
            ],
            "description": "Current lifecycle state of this resource.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `promoted` | Promoted. |\n| `inconclusive` | Inconclusive. |"
          },
          "winnerKey": {
            "type": "string",
            "description": "The winning variant's `key`; only when `state` is `promoted`."
          },
          "reason": {
            "type": "string",
            "enum": [
              "insufficient_evidence"
            ],
            "description": "Only when `state` is `inconclusive`.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `insufficient_evidence` | Insufficient evidence. |"
          }
        },
        "required": [
          "state"
        ],
        "description": "The saved A/B result. `promoted` names the variant sent to the reserve. `inconclusive` means the test paused the campaign with the reserve unsent; the campaign cannot resume, so stop it or duplicate it."
      },
      "messaging__CampaignSendWindowRange": {
        "type": "object",
        "properties": {
          "start": {
            "type": "string",
            "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$",
            "description": "Local start time, `HH:MM` in 24-hour time, inclusive.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^([01][0-9]\\|2[0-3]):[0-5][0-9]$` |",
            "example": "09:00"
          },
          "end": {
            "type": "string",
            "pattern": "^(([01][0-9]|2[0-3]):[0-5][0-9]|24:00)$",
            "description": "Local end time, `HH:MM` in 24-hour time or `24:00`, exclusive. Must be later than `start`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^(([01][0-9]\\|2[0-3]):[0-5][0-9]\\|24:00)$` |",
            "example": "18:00"
          }
        },
        "required": [
          "start",
          "end"
        ],
        "additionalProperties": false
      },
      "messaging__CampaignSendWindow": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "timeZone": {
            "type": "string",
            "description": "IANA time zone the window is written in.",
            "example": "America/Sao_Paulo"
          },
          "days": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "monday",
                "tuesday",
                "wednesday",
                "thursday",
                "friday",
                "saturday",
                "sunday"
              ]
            },
            "minItems": 1,
            "maxItems": 7,
            "description": "Weekdays the campaign may send on, in the window's time zone. At least one; no repeats.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `monday` | Monday. |\n| `tuesday` | Tuesday. |\n| `wednesday` | Wednesday. |\n| `thursday` | Thursday. |\n| `friday` | Friday. |\n| `saturday` | Saturday. |\n| `sunday` | Sunday. |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `7` items |\n| Duplicates | Not accepted; every array item must be unique |",
            "uniqueItems": true,
            "example": [
              "monday",
              "tuesday",
              "wednesday",
              "thursday",
              "friday"
            ]
          },
          "hours": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__CampaignSendWindowRange"
            },
            "minItems": 1,
            "maxItems": 4,
            "description": "Local time ranges the campaign may send in on those days, at most 4. Ranges must not overlap. A range cannot cross midnight; use two ranges instead.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `4` items |"
          },
          "recipientTimeZone": {
            "type": "boolean",
            "description": "Evaluate the window in each recipient's own time zone. The zone comes from the recipient variable named by `timeZoneVariable` when it holds a valid IANA zone, otherwise from the phone number's country when that country uses one UTC offset, otherwise `timeZone`."
          },
          "timeZoneVariable": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.-]{0,63}$",
            "description": "Recipient variable holding the recipient's IANA time zone, used when `recipientTimeZone` is true.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9_][A-Za-z0-9_.-]{0,63}$` |",
            "example": "timeZone"
          }
        },
        "required": [
          "timeZone",
          "days",
          "hours",
          "recipientTimeZone",
          "timeZoneVariable"
        ],
        "description": "When the campaign may send; null sends at any time."
      },
      "messaging__CampaignTrackedLink": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "pattern": "^[a-z0-9_]{1,32}$",
            "description": "Name the message uses as `{{link:<key>}}`. 1 to 32 lowercase letters, digits or underscores, unique within the campaign.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z0-9_]{1,32}$` |",
            "example": "offer"
          },
          "url": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2048,
            "description": "Destination: an absolute `https` URL with a public domain name, at most 2048 characters. No user name, password or IP address.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `2048` characters |",
            "example": "https://example.com/spring-sale"
          }
        },
        "required": [
          "key",
          "url"
        ],
        "additionalProperties": false
      },
      "messaging__CampaignDrip": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "enrollment": {
            "type": "string",
            "enum": [
              "audience",
              "continuous"
            ],
            "description": "Select `audience` for contacts present at launch. Select `continuous` to also accept contacts through the enrollment endpoint while the campaign is running or paused. Setting a continuous drip back to `audience` closes enrollment; the campaign completes after all enrolled contacts finish.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `audience` | Audience. |\n| `continuous` | Continuous. |"
          },
          "exitOnReply": {
            "type": "boolean",
            "description": "When true, a contact who replies to the sending number gets no further steps."
          },
          "exitOnLinkClick": {
            "type": "boolean",
            "description": "When true, a GET request to one of the campaign's tracked links stops the contact's remaining steps. HEAD requests do not count. GET requests from link previews and security scanners also count and do not prove that a person clicked."
          }
        },
        "required": [
          "enrollment",
          "exitOnReply",
          "exitOnLinkClick"
        ],
        "description": "Beta drip settings; null for a campaign that is not a drip."
      },
      "messaging__CampaignFrequencyCap": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "maxPer24Hours": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 1,
            "maximum": 50,
            "description": "Most campaign messages one phone number receives from your team in any rolling 24 hours, 1 to 50. Null sets no 24-hour limit.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `1` through `50` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `50` (inclusive) |"
          },
          "maxPer7Days": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 1,
            "maximum": 200,
            "description": "Most campaign messages one phone number receives from your team in any rolling 7 days, 1 to 200. Null sets no 7-day limit. Must not be lower than `maxPer24Hours`.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `1` through `200` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `200` (inclusive) |"
          }
        },
        "required": [
          "maxPer24Hours",
          "maxPer7Days"
        ],
        "additionalProperties": false,
        "description": "This campaign's own contact frequency cap; null when only the team cap applies."
      },
      "messaging__Campaign": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier for this resource."
          },
          "name": {
            "type": "string",
            "description": "Human-readable name for this resource."
          },
          "status": {
            "type": "string",
            "description": "Current status of this resource or operation."
          },
          "templateId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Template the campaign sends. When set, the template replaces composed messages.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "variableMapping": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": {
              "type": "object",
              "properties": {
                "source": {
                  "type": "string",
                  "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.-]{0,63}$",
                  "description": "Recipient variable that fills this variable, for example a column mapped when the audience was imported. Defaults to the recipient variable with the same name.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9_][A-Za-z0-9_.-]{0,63}$` |"
                },
                "fallback": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 1024,
                  "pattern": "\\S",
                  "description": "Sent when a recipient has no value for the source variable, or only whitespace. Must not be blank.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `1024` characters |\n| Pattern | `\\S` |"
                }
              },
              "additionalProperties": false
            },
            "description": "How each `{{variable}}` in the campaign's template or composed messages is filled, keyed by the variable name used in the content. At most 50 entries. A variable is filled from the recipient's value, then `fallback`, then an inline `{{name | fallback}}` written in a composed message. A recipient with none of them is refused at launch (`campaign_variables_missing`) or, when launched with `skipMissingVariables`, skipped with `missing_variable`. Null when the campaign has no mapping.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Object size: At most `50` properties |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Object size | At most `50` properties |",
            "maxProperties": 50
          },
          "messageVariations": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/messaging__CampaignMessageVariation"
            },
            "description": "Weighted message alternatives, or null when the campaign sends one message.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `array` |\n| Alternative 2 | `null` |"
          },
          "recipientListId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Identifier for the recipient list.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "recipientCount": {
            "type": "number",
            "description": "Number of recipients."
          },
          "sentCount": {
            "type": "number",
            "description": "Number of sents."
          },
          "deliveredCount": {
            "type": "number",
            "description": "Number of delivereds."
          },
          "readCount": {
            "type": "number",
            "description": "Number of reads."
          },
          "failedCount": {
            "type": "number",
            "description": "Number of faileds."
          },
          "skippedCount": {
            "type": "number",
            "description": "Number of skippeds."
          },
          "scheduledAt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Unix timestamp in milliseconds when this operation is scheduled to start.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "launchedAt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Unix timestamp in milliseconds when this campaign launched.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "completedAt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Unix timestamp in milliseconds when this operation completed.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "createdAt": {
            "type": "number",
            "description": "Unix timestamp in milliseconds when this resource was created."
          },
          "updatedAt": {
            "type": "number",
            "description": "Unix timestamp in milliseconds when this resource was last updated."
          },
          "variants": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/messaging__CampaignVariant"
            },
            "description": "The A/B variants; null for a broadcast.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `array` |\n| Alternative 2 | `null` |"
          },
          "variantStrategy": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignVariantStrategy"
              }
            ],
            "description": "Specifies variant strategy for this messaging campaign.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `winnerCriterion`: `delivery` or `read` or `reply`; Field `autoPromote`: `true`; Required fields: `winnerCriterion`, `holdoutPercent`, `autoPromote`, `testWindowMinutes` |\n| Alternative 2 | `null` |"
          },
          "experimentOutcome": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignExperimentOutcome"
              }
            ],
            "description": "Specifies experiment outcome for this messaging campaign.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `state`: `promoted` or `inconclusive`; Field `reason`: `insufficient_evidence`; Required fields: `state` |\n| Alternative 2 | `null` |"
          },
          "followUp": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "delaySeconds": {
                "type": "integer",
                "minimum": 60,
                "maximum": 604800,
                "default": 86400,
                "description": "Specifies delay seconds for this follow up.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `60` through `604800` (inclusive) |"
              },
              "expirySeconds": {
                "type": "integer",
                "minimum": 86400,
                "maximum": 2592000,
                "default": 604800,
                "description": "Specifies expiry seconds for this follow up.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `86400` through `2592000` (inclusive) |"
              },
              "message": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "text"
                        ],
                        "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `text` | Text. |"
                      },
                      "text": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 16384,
                        "description": "Text content carried by this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `16384` characters |"
                      }
                    },
                    "required": [
                      "type",
                      "text"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "template"
                        ],
                        "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `template` | Template. |"
                      },
                      "templateId": {
                        "type": "string",
                        "format": "uuid",
                        "description": "Identifier of the message template.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                      }
                    },
                    "required": [
                      "type",
                      "templateId"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "Human-readable message associated with this result.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `type`: `text`; Required fields: `type`, `text` |\n| Alternative 2 | Type: `object`; Field `type`: `template`; Required fields: `type`, `templateId` |"
              }
            },
            "required": [
              "message"
            ],
            "additionalProperties": false,
            "description": "One optional follow-up, sent from the Number that sent the first message. Null when the campaign has none. Content and timing freeze at launch.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `message` |\n| Alternative 2 | `null` |"
          },
          "sendWindow": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignSendWindow"
              }
            ],
            "description": "Specifies send window for this messaging campaign.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `timeZone`, `days`, `hours`, `recipientTimeZone`, `timeZoneVariable` |\n| Alternative 2 | `null` |"
          },
          "trackedLinks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__CampaignTrackedLink"
            },
            "description": "Tracked links the messages reference as `{{link:<key>}}`. Empty when the campaign tracks none."
          },
          "drip": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignDrip"
              }
            ],
            "description": "Specifies drip for this messaging campaign.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `enrollment`: `audience` or `continuous`; Required fields: `enrollment`, `exitOnReply`, `exitOnLinkClick` |\n| Alternative 2 | `null` |"
          },
          "enrollmentOpen": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether the drip is configured for continuous enrollment. Null for a non-drip. Enrollment also requires running or paused status.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `boolean` |\n| Alternative 2 | `null` |"
          },
          "pauseReason": {
            "type": [
              "string",
              "null"
            ],
            "description": "Current stored pause reason while paused; null when unavailable, for a manual pause without a reason, or for any other status.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "segmentId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Saved audience segment the campaign evaluates at launch, or null. Segments are chosen with a team API key through the Platform API; this field is read-only here.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "segmentSnapshot": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "revision": {
                "type": "integer",
                "description": "Segment revision that launch evaluated."
              },
              "evaluatedAt": {
                "type": "integer",
                "description": "Time launch evaluated the segment, in Unix milliseconds."
              },
              "matchedCount": {
                "type": "integer",
                "description": "Profiles that matched at launch, before opt-outs and withheld consent were removed."
              }
            },
            "required": [
              "revision",
              "evaluatedAt",
              "matchedCount"
            ],
            "additionalProperties": false,
            "description": "The segment revision, evaluation time (Unix milliseconds) and matching profile count launch froze; null before a segment launch.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `revision`, `evaluatedAt`, `matchedCount` |\n| Alternative 2 | `null` |"
          },
          "frequencyCap": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignFrequencyCap"
              }
            ],
            "description": "Specifies frequency cap for this messaging campaign.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `maxPer24Hours`, `maxPer7Days` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "id",
          "name",
          "status",
          "templateId",
          "recipientListId",
          "recipientCount",
          "sentCount",
          "deliveredCount",
          "readCount",
          "failedCount",
          "skippedCount",
          "scheduledAt",
          "launchedAt",
          "completedAt",
          "createdAt",
          "updatedAt",
          "experimentOutcome",
          "followUp",
          "sendWindow",
          "trackedLinks",
          "drip",
          "enrollmentOpen",
          "pauseReason",
          "frequencyCap"
        ]
      },
      "messaging__ListCampaignsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__Campaign"
            },
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__GetCampaignResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__Campaign"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CampaignExperimentResults": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "criterion": {
            "type": "string",
            "enum": [
              "delivery",
              "read",
              "reply"
            ],
            "description": "Specifies criterion for this messaging campaign experiment result.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `delivery` | Delivery. |\n| `read` | Read. |\n| `reply` | Reply. |"
          },
          "outcome": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignExperimentOutcome"
              }
            ],
            "description": "Specifies outcome for this messaging campaign experiment result.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `state`: `promoted` or `inconclusive`; Field `reason`: `insufficient_evidence`; Required fields: `state` |\n| Alternative 2 | `null` |"
          },
          "holdoutCount": {
            "type": "integer",
            "description": "Recipients held out; they receive no message."
          },
          "reserveCount": {
            "type": "integer",
            "description": "Recipients who wait for the winner."
          },
          "variants": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string",
                  "description": "Specifies key for this variant."
                },
                "label": {
                  "type": "string",
                  "description": "Specifies label for this variant."
                },
                "weight": {
                  "type": "integer",
                  "description": "Specifies weight for this variant."
                },
                "assigned": {
                  "type": "integer",
                  "description": "Test recipients assigned this variant."
                },
                "sent": {
                  "type": "integer",
                  "description": "Specifies sent for this variant."
                },
                "delivered": {
                  "type": "integer",
                  "description": "Specifies delivered for this variant."
                },
                "read": {
                  "type": "integer",
                  "description": "Specifies read for this variant."
                },
                "replied": {
                  "type": "integer",
                  "description": "Specifies replied for this variant."
                },
                "outcomeRate": {
                  "type": "number",
                  "description": "The `criterion` count divided by `sent`, counting every result received so far."
                }
              },
              "required": [
                "key",
                "label",
                "weight",
                "assigned",
                "sent",
                "delivered",
                "read",
                "replied",
                "outcomeRate"
              ]
            },
            "description": "Variants associated with this messaging campaign experiment result."
          }
        },
        "required": [
          "criterion",
          "outcome",
          "holdoutCount",
          "reserveCount",
          "variants"
        ],
        "description": "A/B results by variant; null for a broadcast. The decision counts only results received by the test deadline, so `outcomeRate` can differ from the rate the decision used."
      },
      "messaging__CampaignDripStepStats": {
        "type": "object",
        "properties": {
          "step": {
            "type": "integer",
            "description": "Step position, from 0."
          },
          "entered": {
            "type": "integer",
            "description": "Contacts who reached this step: its delay started. Every contact enters step 0."
          },
          "waiting": {
            "type": "integer",
            "description": "Contacts waiting for this step or being sent it now."
          },
          "sent": {
            "type": "integer",
            "description": "Specifies sent for this messaging campaign drip step stat."
          },
          "delivered": {
            "type": "integer",
            "description": "Specifies delivered for this messaging campaign drip step stat."
          },
          "read": {
            "type": "integer",
            "description": "Specifies read for this messaging campaign drip step stat."
          },
          "replied": {
            "type": "integer",
            "description": "Contacts whose first reply after this step came within 7 days of it, before the next step."
          },
          "exited": {
            "type": "integer",
            "description": "Contacts who left the drip while waiting for this step: they replied, opted out or opened a tracked link."
          },
          "failed": {
            "type": "integer",
            "description": "Contacts whose step could not be sent. Their remaining steps stop."
          }
        },
        "required": [
          "step",
          "entered",
          "waiting",
          "sent",
          "delivered",
          "read",
          "replied",
          "exited",
          "failed"
        ]
      },
      "messaging__CampaignDripStats": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "enrollment": {
            "type": "string",
            "enum": [
              "audience",
              "continuous"
            ],
            "description": "Specifies enrollment for this messaging campaign drip stat.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `audience` | Audience. |\n| `continuous` | Continuous. |"
          },
          "enrolled": {
            "type": "integer",
            "description": "Contacts in the drip, from the audience and the enrollment endpoint."
          },
          "enrolledByApi": {
            "type": "integer",
            "description": "Contacts added through the enrollment endpoint."
          },
          "active": {
            "type": "integer",
            "description": "Contacts still owed a step."
          },
          "completed": {
            "type": "integer",
            "description": "Contacts sent every step."
          },
          "exited": {
            "type": "integer",
            "description": "Contacts who left early: a reply, an opt-out or an opened tracked link."
          },
          "steps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__CampaignDripStepStats"
            },
            "description": "Steps associated with this messaging campaign drip stat."
          }
        },
        "required": [
          "enrollment",
          "enrolled",
          "enrolledByApi",
          "active",
          "completed",
          "exited",
          "steps"
        ],
        "description": "Drip results by step; null for a campaign that is not a drip."
      },
      "messaging__CampaignFrequencyCapAnalytics": {
        "type": "object",
        "properties": {
          "skippedRecipientCount": {
            "type": "integer",
            "description": "Recipients whose first, sequence or follow-up message was skipped by the cap."
          }
        },
        "required": [
          "skippedRecipientCount"
        ],
        "additionalProperties": false,
        "description": "Recipients with a message skipped by the contact frequency cap."
      },
      "messaging__CampaignFollowUpReport": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "minimum": 0,
            "description": "Final total for this order or price summary.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "waiting": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies waiting for this messaging campaign follow up report.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "scheduled": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies scheduled for this messaging campaign follow up report.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "sending": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies sending for this messaging campaign follow up report.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "sent": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies sent for this messaging campaign follow up report.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "delivered": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies delivered for this messaging campaign follow up report.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "read": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies read for this messaging campaign follow up report.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "replied": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies replied for this messaging campaign follow up report.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "cancelled": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies cancelled for this messaging campaign follow up report.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "expired": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies expired for this messaging campaign follow up report.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "failed": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies failed for this messaging campaign follow up report.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "unknown": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies unknown for this messaging campaign follow up report.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "nextDueAt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Timestamp for next due at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "total",
          "waiting",
          "scheduled",
          "sending",
          "sent",
          "delivered",
          "read",
          "replied",
          "cancelled",
          "expired",
          "failed",
          "unknown",
          "nextDueAt"
        ],
        "additionalProperties": false,
        "description": "Follow-up outcomes, counted separately from the first message. All zero when the campaign has no follow-up."
      },
      "messaging__CampaignAnalytics": {
        "type": "object",
        "properties": {
          "campaignId": {
            "type": "string",
            "description": "Identifier for the campaign."
          },
          "recipientCount": {
            "type": "integer",
            "description": "Number of recipients."
          },
          "sentCount": {
            "type": "integer",
            "description": "Number of sents."
          },
          "deliveredCount": {
            "type": "integer",
            "description": "Number of delivereds."
          },
          "readCount": {
            "type": "integer",
            "description": "Number of reads."
          },
          "failedCount": {
            "type": "integer",
            "description": "Number of faileds."
          },
          "skippedCount": {
            "type": "integer",
            "description": "Number of skippeds."
          },
          "respondedCount": {
            "type": "integer",
            "description": "Number of respondeds."
          },
          "responseRate": {
            "type": "number",
            "description": "`respondedCount` divided by `sentCount`; 0 before the first send."
          },
          "averageResponseTimeMs": {
            "type": [
              "number",
              "null"
            ],
            "description": "Mean time from send to first reply in milliseconds; null before the first reply.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "minResponseTimeMs": {
            "type": [
              "number",
              "null"
            ],
            "description": "Specifies min response time ms for this messaging campaign analytic.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "maxResponseTimeMs": {
            "type": [
              "number",
              "null"
            ],
            "description": "Specifies max response time ms for this messaging campaign analytic.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "experiment": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignExperimentResults"
              }
            ],
            "description": "Specifies experiment for this messaging campaign analytic.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `criterion`: `delivery` or `read` or `reply`; Required fields: `criterion`, `outcome`, `holdoutCount`, `reserveCount`, `variants` |\n| Alternative 2 | `null` |"
          },
          "drip": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignDripStats"
              }
            ],
            "description": "Specifies drip for this messaging campaign analytic.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `enrollment`: `audience` or `continuous`; Required fields: `enrollment`, `enrolled`, `enrolledByApi`, `active`, `completed`, `exited`, `steps` |\n| Alternative 2 | `null` |"
          },
          "frequencyCap": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignFrequencyCapAnalytics"
              }
            ],
            "description": "Specifies frequency cap for this messaging campaign analytic."
          },
          "followUps": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignFollowUpReport"
              }
            ],
            "description": "Specifies follow ups for this messaging campaign analytic."
          }
        },
        "required": [
          "campaignId",
          "recipientCount",
          "sentCount",
          "deliveredCount",
          "readCount",
          "failedCount",
          "skippedCount",
          "respondedCount",
          "responseRate",
          "averageResponseTimeMs",
          "minResponseTimeMs",
          "maxResponseTimeMs",
          "experiment",
          "drip",
          "frequencyCap",
          "followUps"
        ]
      },
      "messaging__CampaignAnalyticsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignAnalytics"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CampaignTrackedLinkReport": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Tracked link key.",
            "example": "offer"
          },
          "url": {
            "type": "string",
            "description": "Destination of the tracked link.",
            "example": "https://example.com/spring-sale"
          },
          "uniqueOpens": {
            "type": "integer",
            "minimum": 0,
            "description": "Recipients who opened the link at least once.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "totalOpens": {
            "type": "integer",
            "minimum": 0,
            "description": "Every recorded open, including repeat opens.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "key",
          "url",
          "uniqueOpens",
          "totalOpens"
        ]
      },
      "messaging__GetCampaignLinksResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__CampaignTrackedLinkReport"
            },
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CampaignEnrollment": {
        "type": "object",
        "properties": {
          "campaignId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the campaign.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "recipientId": {
            "type": "string",
            "format": "uuid",
            "description": "The contact's recipient ID in this campaign.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "phone": {
            "type": "string",
            "description": "The contact, in E.164 format."
          },
          "created": {
            "type": "boolean",
            "description": "False when the phone was already in this drip. Nothing changed, and a contact who finished or left is not enrolled again."
          },
          "status": {
            "type": "string",
            "description": "Recipient status of the first step: `queued` until sent, or `skipped` for an opted-out phone, which is never sent."
          },
          "enrolledAt": {
            "type": "number",
            "description": "When the contact joined the drip, in Unix milliseconds."
          }
        },
        "required": [
          "campaignId",
          "recipientId",
          "phone",
          "created",
          "status",
          "enrolledAt"
        ]
      },
      "messaging__EnrollCampaignContactResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignEnrollment"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__EnrollCampaignContactRequest": {
        "type": "object",
        "properties": {
          "phone": {
            "type": "string",
            "minLength": 1,
            "maxLength": 32,
            "description": "The contact in international format. A phone already in the drip returns its existing enrollment with `created: false`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `32` characters |",
            "example": "+5511999990000"
          },
          "variables": {
            "type": "object",
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 1024
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "description": "The contact's variables, at most 50, used to fill the steps.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Object size | At most `50` properties |",
            "maxProperties": 50
          }
        },
        "required": [
          "phone"
        ],
        "additionalProperties": false
      },
      "messaging__CreateCampaignResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__Campaign"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CampaignVariableMapping": {
        "type": "object",
        "additionalProperties": {
          "type": "object",
          "properties": {
            "source": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.-]{0,63}$",
              "description": "Recipient variable that fills this variable, for example a column mapped when the audience was imported. Defaults to the recipient variable with the same name.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9_][A-Za-z0-9_.-]{0,63}$` |"
            },
            "fallback": {
              "type": "string",
              "minLength": 1,
              "maxLength": 1024,
              "pattern": "\\S",
              "description": "Sent when a recipient has no value for the source variable, or only whitespace. Must not be blank.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `1024` characters |\n| Pattern | `\\S` |"
            }
          },
          "additionalProperties": false
        },
        "description": "How each `{{variable}}` in the campaign's template or composed messages is filled, keyed by the variable name used in the content. At most 50 entries. A variable is filled from the recipient's value, then `fallback`, then an inline `{{name | fallback}}` written in a composed message. A recipient with none of them is refused at launch (`campaign_variables_missing`) or, when launched with `skipMissingVariables`, skipped with `missing_variable`.",
        "maxProperties": 50
      },
      "messaging__CampaignSendWindowRequest": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "timeZone": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "IANA time zone the window is written in, such as `America/Sao_Paulo`. When omitted, the team's time zone is stored, or `UTC` when the team has none.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |",
            "example": "America/Sao_Paulo"
          },
          "days": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "monday",
                "tuesday",
                "wednesday",
                "thursday",
                "friday",
                "saturday",
                "sunday"
              ]
            },
            "minItems": 1,
            "maxItems": 7,
            "description": "Weekdays the campaign may send on, in the window's time zone. At least one; no repeats.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `monday` | Monday. |\n| `tuesday` | Tuesday. |\n| `wednesday` | Wednesday. |\n| `thursday` | Thursday. |\n| `friday` | Friday. |\n| `saturday` | Saturday. |\n| `sunday` | Sunday. |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `7` items |\n| Duplicates | Not accepted; every array item must be unique |",
            "uniqueItems": true,
            "example": [
              "monday",
              "tuesday",
              "wednesday",
              "thursday",
              "friday"
            ]
          },
          "hours": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__CampaignSendWindowRange"
            },
            "minItems": 1,
            "maxItems": 4,
            "description": "Local time ranges the campaign may send in on those days, at most 4. Ranges must not overlap. A range cannot cross midnight; use two ranges instead.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `4` items |"
          },
          "recipientTimeZone": {
            "type": "boolean",
            "default": false,
            "description": "Evaluate the window in each recipient's own time zone. The zone comes from the recipient variable named by `timeZoneVariable` when it holds a valid IANA zone, otherwise from the phone number's country when that country uses one UTC offset, otherwise `timeZone`."
          },
          "timeZoneVariable": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.-]{0,63}$",
            "default": "timeZone",
            "description": "Recipient variable holding the recipient's IANA time zone, used when `recipientTimeZone` is true.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9_][A-Za-z0-9_.-]{0,63}$` |",
            "example": "timeZone"
          }
        },
        "required": [
          "days",
          "hours"
        ],
        "additionalProperties": false,
        "description": "When the campaign may send. Recipients outside the window stay `queued` and are sent when it next opens. `null` sends at any time."
      },
      "messaging__CampaignDripInput": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "enrollment": {
            "type": "string",
            "enum": [
              "audience",
              "continuous"
            ],
            "default": "audience",
            "description": "Select `audience` for contacts present at launch. Select `continuous` to also accept contacts through the enrollment endpoint while the campaign is running or paused. Setting a continuous drip back to `audience` closes enrollment; the campaign completes after all enrolled contacts finish.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `audience` | Audience. |\n| `continuous` | Continuous. |"
          },
          "exitOnReply": {
            "type": "boolean",
            "default": true,
            "description": "When true, a contact who replies to the sending number gets no further steps."
          },
          "exitOnLinkClick": {
            "type": "boolean",
            "default": false,
            "description": "When true, a GET request to one of the campaign's tracked links stops the contact's remaining steps. HEAD requests do not count. GET requests from link previews and security scanners also count and do not prove that a person clicked."
          }
        },
        "additionalProperties": false,
        "description": "Beta access is required. Defaults to audience enrollment, exit on reply true and exit on link open false. Null creates an ordinary campaign."
      },
      "messaging__CampaignRecipientInput": {
        "type": "object",
        "properties": {
          "phone": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "Phone number in international format, for example `+14155550100`. Spaces, dots, hyphens and parentheses are ignored; a leading `00` is read as `+`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |"
          },
          "variables": {
            "type": "object",
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "description": "Template variables for this recipient. At most 50; names use letters, digits, `_`, `.` or `-`; values are stored as strings of at most 1,024 characters."
          }
        },
        "required": [
          "phone"
        ]
      },
      "messaging__CreateCampaignRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          },
          "templateId": {
            "type": "string",
            "format": "uuid",
            "description": "Template in this project to send instead of composed messages. On Cloud API numbers it must be approved by WhatsApp on every number the campaign can send from before launch.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "variableMapping": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignVariableMapping"
              }
            ],
            "description": "Specifies variable mapping for this messaging create campaign request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Object size | At most `50` properties |"
          },
          "variants": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/messaging__CampaignVariant"
            },
            "minItems": 2,
            "maxItems": 4,
            "description": "Two to four messages to test. Requires `variantStrategy` and cannot be combined with `templateId`. A/B tests are a beta; a team that is not enrolled gets `403 feature_unavailable`. Omit, or send null with a null `variantStrategy`, for a broadcast.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `array`; Array size: `2` through `4` items |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `2` through `4` items |"
          },
          "variantStrategy": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignVariantStrategy"
              }
            ],
            "description": "Specifies variant strategy for this messaging create campaign request.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `winnerCriterion`: `delivery` or `read` or `reply`; Field `autoPromote`: `true`; Required fields: `winnerCriterion`, `holdoutPercent`, `autoPromote`, `testWindowMinutes` |\n| Alternative 2 | `null` |"
          },
          "messageVariations": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/messaging__CampaignMessageVariation"
            },
            "minItems": 2,
            "maxItems": 5,
            "description": "Two to five message alternatives for linked-device numbers. Each recipient receives one, chosen by weight, and keeps it across retries. Cannot be combined with composed messages, a template or an A/B test. A beta; a team that is not enrolled gets `403 feature_unavailable`.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `array`; Array size: `2` through `5` items |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `2` through `5` items |"
          },
          "recipientListId": {
            "type": "string",
            "description": "Identifier for the recipient list."
          },
          "senderConfig": {
            "type": "object",
            "additionalProperties": {},
            "description": "Structured sender config values for this messaging create campaign request."
          },
          "scheduledAt": {
            "type": "number",
            "description": "Unix timestamp in milliseconds when this operation is scheduled to start."
          },
          "sendWindow": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/messaging__CampaignSendWindowRequest"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies send window for this messaging create campaign request.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `days`, `hours` |\n| Alternative 2 | `null` |"
          },
          "drip": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignDripInput"
              }
            ],
            "description": "Specifies drip for this messaging create campaign request.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `enrollment`: `audience` or `continuous` |\n| Alternative 2 | `null` |"
          },
          "trackedLinks": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/messaging__CampaignTrackedLink"
            },
            "maxItems": 5,
            "description": "Beta. Links to track, at most 5. Each message reference `{{link:<key>}}` is replaced with a short link per recipient that redirects to `url`. Only campaigns sent from linked-device numbers track links. Setting links requires the campaign link tracking beta (`403 feature_unavailable` otherwise); `null` or `[]` removes them.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `array`; Array size: At most `5` items |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `5` items |"
          },
          "frequencyCap": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignFrequencyCap"
              },
              {
                "description": "This campaign's own contact frequency cap. It can only make the team cap stricter. Contact frequency caps are a beta; a team that is not enrolled gets `403 feature_unavailable`. Omit, or send null, to use the team cap alone."
              }
            ],
            "description": "Specifies frequency cap for this messaging create campaign request.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `maxPer24Hours`, `maxPer7Days` |\n| Alternative 2 | `null` |"
          },
          "followUp": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "delaySeconds": {
                "type": "integer",
                "minimum": 60,
                "maximum": 604800,
                "default": 86400,
                "description": "Specifies delay seconds for this follow up.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `60` through `604800` (inclusive) |"
              },
              "expirySeconds": {
                "type": "integer",
                "minimum": 86400,
                "maximum": 2592000,
                "default": 604800,
                "description": "Specifies expiry seconds for this follow up.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `86400` through `2592000` (inclusive) |"
              },
              "message": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "text"
                        ],
                        "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `text` | Text. |"
                      },
                      "text": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 16384,
                        "description": "Text content carried by this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `16384` characters |"
                      }
                    },
                    "required": [
                      "type",
                      "text"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "template"
                        ],
                        "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `template` | Template. |"
                      },
                      "templateId": {
                        "type": "string",
                        "format": "uuid",
                        "description": "Identifier of the message template.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                      }
                    },
                    "required": [
                      "type",
                      "templateId"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "Human-readable message associated with this result.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `type`: `text`; Required fields: `type`, `text` |\n| Alternative 2 | Type: `object`; Field `type`: `template`; Required fields: `type`, `templateId` |"
              }
            },
            "required": [
              "message"
            ],
            "additionalProperties": false,
            "description": "One optional follow-up. A beta; a team that is not enrolled gets `403 feature_unavailable`. Requires a single first message: a campaign with a composed message sequence cannot launch with a follow-up. Follow-up text cannot contain tracked links.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `message` |\n| Alternative 2 | `null` |"
          },
          "recipients": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__CampaignRecipientInput"
            },
            "maxItems": 1000,
            "description": "Recipients to add inline, at most 1,000. Every entry must be valid or the campaign is not created; a repeated phone is kept once. Combine with `recipientListId` to add an audience at launch; add more with the add-recipients endpoint while the campaign is a draft.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `1000` items |"
          }
        },
        "required": [
          "name"
        ]
      },
      "messaging__UpdateCampaignResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__Campaign"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CampaignDripPatch": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "enrollment": {
            "type": "string",
            "enum": [
              "audience",
              "continuous"
            ],
            "description": "Select `audience` for contacts present at launch. Select `continuous` to also accept contacts through the enrollment endpoint while the campaign is running or paused. Setting a continuous drip back to `audience` closes enrollment; the campaign completes after all enrolled contacts finish.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `audience` | Audience. |\n| `continuous` | Continuous. |"
          },
          "exitOnReply": {
            "type": "boolean",
            "description": "When true, a contact who replies to the sending number gets no further steps."
          },
          "exitOnLinkClick": {
            "type": "boolean",
            "description": "When true, a GET request to one of the campaign's tracked links stops the contact's remaining steps. HEAD requests do not count. GET requests from link previews and security scanners also count and do not prove that a person clicked."
          }
        },
        "additionalProperties": false,
        "description": "Beta. Omitted fields preserve stored settings; new drip settings default to audience enrollment, exit on reply true and exit on link open false. Null makes the draft an ordinary campaign. Only an unlaunched draft can change settings, except closing continuous enrollment with unchanged exit flags. A PATCH containing only that close is allowed without beta access."
      },
      "messaging__UpdateCampaignRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "description": "New name, 1 to 200 characters after trimming.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `200` characters |"
          },
          "followUp": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "delaySeconds": {
                "type": "integer",
                "minimum": 60,
                "maximum": 604800,
                "default": 86400,
                "description": "Specifies delay seconds for this follow up.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `60` through `604800` (inclusive) |"
              },
              "expirySeconds": {
                "type": "integer",
                "minimum": 86400,
                "maximum": 2592000,
                "default": 604800,
                "description": "Specifies expiry seconds for this follow up.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `86400` through `2592000` (inclusive) |"
              },
              "message": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "text"
                        ],
                        "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `text` | Text. |"
                      },
                      "text": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 16384,
                        "description": "Text content carried by this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `16384` characters |"
                      }
                    },
                    "required": [
                      "type",
                      "text"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "template"
                        ],
                        "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `template` | Template. |"
                      },
                      "templateId": {
                        "type": "string",
                        "format": "uuid",
                        "description": "Identifier of the message template.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                      }
                    },
                    "required": [
                      "type",
                      "templateId"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "Human-readable message associated with this result.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `type`: `text`; Required fields: `type`, `text` |\n| Alternative 2 | Type: `object`; Field `type`: `template`; Required fields: `type`, `templateId` |"
              }
            },
            "required": [
              "message"
            ],
            "additionalProperties": false,
            "description": "One follow-up, editable only before launch. Null removes it. A beta; a team that is not enrolled gets `403 feature_unavailable` when setting one. The first read takes precedence over the first delivery; replies and opt-outs cancel; an expired wait never sends.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `message` |\n| Alternative 2 | `null` |"
          },
          "recipientListId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Audience to send to, or null for none. Only an unlaunched draft can change it; the campaign's current recipients are replaced by the audience's members at launch.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "senderConfig": {
            "type": "object",
            "additionalProperties": {},
            "description": "Replaces the sender selection and throughput. On an unlaunched draft it passes the same checks as create. Once the campaign has launched it must pass the launch checks."
          },
          "scheduledAt": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 8640000000000000,
            "description": "Start time in milliseconds since the Unix epoch, or null to start at launch. Only an unlaunched draft can change it.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` through `8640000000000000` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `8640000000000000` (inclusive) |"
          },
          "sendWindow": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/messaging__CampaignSendWindowRequest"
                  },
                  {
                    "description": "When the campaign may send. Null removes the window. Only a draft or paused campaign can change it; a paused edit requires in-flight sends to have settled."
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies send window for this messaging update campaign request.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `days`, `hours` |\n| Alternative 2 | `null` |"
          },
          "drip": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignDripPatch"
              }
            ],
            "description": "Specifies drip for this messaging update campaign request.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `enrollment`: `audience` or `continuous` |\n| Alternative 2 | `null` |"
          },
          "frequencyCap": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignFrequencyCap"
              },
              {
                "description": "Replaces this campaign's own contact frequency cap; null removes it and leaves the team cap. Only a draft or paused campaign can change it. Setting a cap requires the contact frequency caps beta; removing one does not."
              }
            ],
            "description": "Specifies frequency cap for this messaging update campaign request.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `maxPer24Hours`, `maxPer7Days` |\n| Alternative 2 | `null` |"
          },
          "trackedLinks": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/messaging__CampaignTrackedLink"
            },
            "maxItems": 5,
            "description": "Beta. Links to track, at most 5. Each message reference `{{link:<key>}}` is replaced with a short link per recipient that redirects to `url`. Only campaigns sent from linked-device numbers track links. Setting links requires the campaign link tracking beta (`403 feature_unavailable` otherwise); `null` or `[]` removes them. Only a draft, including one waiting for its scheduled start, can change them; a launched campaign must still define every link its messages reference.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `array`; Array size: At most `5` items |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `5` items |"
          },
          "templateId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Template in this project to send instead of composed messages, or null to send the composed messages. Only an unlaunched draft can change it.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "variableMapping": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": {
              "type": "object",
              "properties": {
                "source": {
                  "type": "string",
                  "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.-]{0,63}$",
                  "description": "Recipient variable that fills this variable, for example a column mapped when the audience was imported. Defaults to the recipient variable with the same name.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9_][A-Za-z0-9_.-]{0,63}$` |"
                },
                "fallback": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 1024,
                  "pattern": "\\S",
                  "description": "Sent when a recipient has no value for the source variable, or only whitespace. Must not be blank.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `1024` characters |\n| Pattern | `\\S` |"
                }
              },
              "additionalProperties": false
            },
            "description": "Replaces the whole variable mapping; null clears it. Only an unlaunched draft can change it.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Object size: At most `50` properties |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Object size | At most `50` properties |",
            "maxProperties": 50
          },
          "messageVariations": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/messaging__CampaignMessageVariation"
            },
            "minItems": 2,
            "maxItems": 5,
            "description": "Replaces the weighted message alternatives; null clears them. Only an unlaunched draft can change it.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `array`; Array size: `2` through `5` items |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `2` through `5` items |"
          },
          "variants": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/messaging__CampaignVariant"
            },
            "minItems": 2,
            "maxItems": 4,
            "description": "Replaces the A/B variants. Null, together with a null `variantStrategy`, makes the draft a broadcast. Only an unlaunched draft can change it.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `array`; Array size: `2` through `4` items |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `2` through `4` items |"
          },
          "variantStrategy": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignVariantStrategy"
              }
            ],
            "description": "Specifies variant strategy for this messaging update campaign request.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `winnerCriterion`: `delivery` or `read` or `reply`; Field `autoPromote`: `true`; Required fields: `winnerCriterion`, `holdoutPercent`, `autoPromote`, `testWindowMinutes` |\n| Alternative 2 | `null` |"
          }
        },
        "additionalProperties": false,
        "minProperties": 1
      },
      "messaging__CampaignOperation": {
        "allOf": [
          {
            "$ref": "#/components/schemas/messaging__Campaign"
          },
          {
            "type": "object",
            "properties": {
              "operationId": {
                "type": "string",
                "format": "uuid",
                "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
              }
            },
            "required": [
              "operationId"
            ]
          }
        ]
      },
      "messaging__LaunchCampaignResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignOperation"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__LaunchCampaignRequest": {
        "type": "object",
        "properties": {
          "scheduledAt": {
            "type": "number",
            "description": "Unix timestamp in milliseconds when this operation is scheduled to start."
          },
          "skipMissingVariables": {
            "type": "boolean",
            "description": "Launch even when some recipients have no value and no fallback for a variable. Those recipients are skipped with `failureReason` `missing_variable` before the first send. Without it, such a launch is refused with `422 campaign_variables_missing`."
          }
        }
      },
      "messaging__PauseCampaignResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignOperation"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__ResumeCampaignResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignOperation"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CampaignStopOperation": {
        "allOf": [
          {
            "$ref": "#/components/schemas/messaging__Campaign"
          },
          {
            "type": "object",
            "properties": {
              "operationId": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid",
                "description": "The operation that stops the campaign. Null when the campaign had no active delivery run: it was cancelled immediately and none of its remaining recipients are sent.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
              }
            },
            "required": [
              "operationId"
            ]
          }
        ]
      },
      "messaging__StopCampaignResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignStopOperation"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CampaignTestSend": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "The test send's ID.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "campaignId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the campaign.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "status": {
            "type": "string",
            "enum": [
              "sent"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `sent` | Sent. |"
          },
          "from": {
            "type": "object",
            "properties": {
              "sessionId": {
                "type": "string",
                "format": "uuid",
                "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
              },
              "phone": {
                "type": "string",
                "description": "Phone number in international format."
              }
            },
            "required": [
              "sessionId",
              "phone"
            ],
            "description": "The number the test was sent from."
          },
          "to": {
            "type": "string",
            "description": "The seed recipient, in E.164 format."
          },
          "messageId": {
            "type": [
              "string",
              "null"
            ],
            "description": "The WhatsApp message ID, when the send path returned one.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "variables": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "The variable values the content was rendered with."
          },
          "createdAt": {
            "type": "number",
            "description": "When the test was admitted, in epoch milliseconds."
          }
        },
        "required": [
          "id",
          "campaignId",
          "status",
          "from",
          "to",
          "messageId",
          "variables",
          "createdAt"
        ]
      },
      "messaging__TestSendCampaignResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignTestSend"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CampaignTestSendRequest": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string",
            "format": "uuid",
            "description": "The number to send the test from. It must be connected, on a plan that includes Campaigns, and, when the campaign selects numbers, one of them.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "to": {
            "type": "string",
            "minLength": 1,
            "maxLength": 32,
            "description": "The seed recipient in international format. It must be the phone of a number connected to your team.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `32` characters |",
            "example": "+5511999990000"
          },
          "sampleRecipientId": {
            "type": "string",
            "format": "uuid",
            "description": "A recipient of this campaign whose variables fill the content. Without it and without `variables`, the campaign's first recipient, or its audience's first member, is the sample.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "variables": {
            "type": "object",
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 1024
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "description": "Variable values for the test, at most 50. They override the sample recipient's values; without `sampleRecipientId`, only these values are used.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Object size | At most `50` properties |",
            "maxProperties": 50
          }
        },
        "required": [
          "sessionId",
          "to"
        ]
      },
      "messaging__RescheduleCampaignResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignOperation"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__RescheduleCampaignRequest": {
        "type": "object",
        "properties": {
          "scheduledAt": {
            "type": [
              "integer",
              "null"
            ],
            "exclusiveMinimum": 0,
            "maximum": 8640000000000000,
            "description": "The new start time as a Unix timestamp in milliseconds. `null`, or a time that is not in the future, starts the campaign now.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: Greater than `0` and at most `8640000000000000` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | Greater than `0` and at most `8640000000000000` |"
          }
        },
        "required": [
          "scheduledAt"
        ],
        "additionalProperties": false
      },
      "messaging__RequeueCampaignResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "object",
            "additionalProperties": {},
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__RequeueCampaignRequest": {
        "type": "object",
        "properties": {
          "includeSkippedError": {
            "type": "boolean",
            "description": "Whether include skipped error."
          }
        }
      },
      "messaging__CampaignReplyFlowSend": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "text"
                ],
                "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `text` | Text. |"
              },
              "text": {
                "type": "string",
                "minLength": 1,
                "maxLength": 4096,
                "description": "Text content carried by this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `4096` characters |"
              }
            },
            "required": [
              "kind",
              "text"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "buttons"
                ],
                "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `buttons` | Buttons. |"
              },
              "body": {
                "type": "string",
                "minLength": 1,
                "maxLength": 1024,
                "description": "Primary text content shown to the recipient.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `1024` characters |"
              },
              "footer": {
                "type": "string",
                "maxLength": 60,
                "description": "Supplementary footer text shown below the primary content.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `60` characters |"
              },
              "buttons": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$",
                      "description": "Choice ID, 1 to 64 letters, digits, `.`, `_`, `:` or `-`, starting with a letter or digit.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$` |"
                    },
                    "text": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 20,
                      "description": "Text content carried by this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `20` characters |"
                    }
                  },
                  "required": [
                    "id",
                    "text"
                  ],
                  "additionalProperties": false
                },
                "minItems": 1,
                "maxItems": 3,
                "description": "Interactive buttons displayed with the message.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `3` items |"
              }
            },
            "required": [
              "kind",
              "body",
              "buttons"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "list"
                ],
                "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `list` | List. |"
              },
              "body": {
                "type": "string",
                "minLength": 1,
                "maxLength": 1024,
                "description": "Primary text content shown to the recipient.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `1024` characters |"
              },
              "buttonText": {
                "type": "string",
                "minLength": 1,
                "maxLength": 20,
                "description": "Text displayed on the action button.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `20` characters |"
              },
              "footer": {
                "type": "string",
                "maxLength": 60,
                "description": "Supplementary footer text shown below the primary content.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `60` characters |"
              },
              "rows": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$",
                      "description": "Choice ID, 1 to 64 letters, digits, `.`, `_`, `:` or `-`, starting with a letter or digit.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$` |"
                    },
                    "title": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 24,
                      "description": "Human-readable title shown to the recipient or operator.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `24` characters |"
                    },
                    "description": {
                      "type": "string",
                      "maxLength": 72,
                      "description": "Human-readable description of this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `72` characters |"
                    }
                  },
                  "required": [
                    "id",
                    "title"
                  ],
                  "additionalProperties": false
                },
                "minItems": 1,
                "maxItems": 10,
                "description": "Rows associated with this one of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `10` items |"
              }
            },
            "required": [
              "kind",
              "body",
              "buttonText",
              "rows"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "flow_form"
                ],
                "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `flow_form` | Flow form. |"
              },
              "flowId": {
                "type": "string",
                "format": "uuid",
                "description": "Identifier for the flow.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
              },
              "body": {
                "type": "string",
                "minLength": 1,
                "maxLength": 1024,
                "description": "Primary text content shown to the recipient.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `1024` characters |"
              },
              "buttonText": {
                "type": "string",
                "minLength": 1,
                "maxLength": 20,
                "description": "Text displayed on the action button.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `20` characters |"
              },
              "footer": {
                "type": "string",
                "maxLength": 60,
                "description": "Supplementary footer text shown below the primary content.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `60` characters |"
              },
              "screen": {
                "type": "string",
                "pattern": "^[A-Za-z0-9_]{1,64}$",
                "description": "Flow screen opened when the recipient activates the message.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9_]{1,64}$` |"
              }
            },
            "required": [
              "kind",
              "flowId",
              "body",
              "buttonText",
              "screen"
            ],
            "additionalProperties": false,
            "description": "A published WhatsApp Flow form. Official numbers only."
          }
        ]
      },
      "messaging__CampaignReplyFlowMatch": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "choice"
                ],
                "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `choice` | Choice. |"
              },
              "replyKind": {
                "type": "string",
                "enum": [
                  "button",
                  "list"
                ],
                "description": "Category assigned to reply.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `button` | Button. |\n| `list` | List. |"
              },
              "id": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$",
                "description": "Choice ID, 1 to 64 letters, digits, `.`, `_`, `:` or `-`, starting with a letter or digit.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$` |"
              }
            },
            "required": [
              "kind",
              "replyKind",
              "id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "keyword"
                ],
                "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `keyword` | Keyword. |"
              },
              "value": {
                "type": "string",
                "minLength": 1,
                "maxLength": 64,
                "description": "Value assigned to this field.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |"
              }
            },
            "required": [
              "kind",
              "value"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "flow_submission"
                ],
                "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `flow_submission` | Flow submission. |"
              }
            },
            "required": [
              "kind"
            ],
            "additionalProperties": false
          }
        ]
      },
      "messaging__CampaignReplyFlowNode": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$` |"
          },
          "send": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignReplyFlowSend"
              }
            ],
            "description": "Specifies send for this messaging campaign reply flow node.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `kind`: `text`; Required fields: `kind`, `text` |\n| Alternative 2 | Type: `object`; Field `kind`: `buttons`; Required fields: `kind`, `body`, `buttons` |\n| Alternative 3 | Type: `object`; Field `kind`: `list`; Required fields: `kind`, `body`, `buttonText`, `rows` |\n| Alternative 4 | Type: `object`; Field `kind`: `flow_form`; Required fields: `kind`, `flowId`, `body`, `buttonText`, `screen` |"
          },
          "edges": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "match": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/messaging__CampaignReplyFlowMatch"
                    }
                  ],
                  "description": "Specifies match for this edge.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `kind`: `choice`; Field `replyKind`: `button` or `list`; Required fields: `kind`, `replyKind`, `id` |\n| Alternative 2 | Type: `object`; Field `kind`: `keyword`; Required fields: `kind`, `value` |\n| Alternative 3 | Type: `object`; Field `kind`: `flow_submission`; Required fields: `kind` |"
                },
                "to": {
                  "type": "string",
                  "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$",
                  "description": "Specifies to for this edge.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$` |"
                }
              },
              "required": [
                "match",
                "to"
              ],
              "additionalProperties": false
            },
            "maxItems": 3,
            "description": "Edges associated with this messaging campaign reply flow node.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `3` items |"
          }
        },
        "required": [
          "id",
          "edges"
        ],
        "additionalProperties": false
      },
      "messaging__CampaignReplyFlowDefinition": {
        "type": "object",
        "properties": {
          "entryNodeId": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$",
            "description": "Identifier for the entry node.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$` |"
          },
          "nodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__CampaignReplyFlowNode"
            },
            "minItems": 2,
            "maxItems": 12,
            "description": "Nodes associated with this messaging campaign reply flow definition.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `2` through `12` items |"
          }
        },
        "required": [
          "entryNodeId",
          "nodes"
        ],
        "additionalProperties": false,
        "description": "An acyclic graph of 2 to 12 steps. The entry step waits for the first reply to the campaign message and sends nothing."
      },
      "messaging__CampaignReplyFlow": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "flowKey": {
            "type": "string",
            "format": "uuid",
            "description": "Groups the revisions of one reply flow.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "revision": {
            "type": "integer",
            "description": "Specifies revision for this messaging campaign reply flow."
          },
          "name": {
            "type": "string",
            "description": "Human-readable name for this resource."
          },
          "definition": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignReplyFlowDefinition"
              }
            ],
            "description": "Structured definition for this resource."
          },
          "createdAt": {
            "type": "number",
            "description": "Unix timestamp in milliseconds when this resource was created."
          }
        },
        "required": [
          "id",
          "flowKey",
          "revision",
          "name",
          "definition",
          "createdAt"
        ]
      },
      "messaging__CreateCampaignReplyFlowResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignReplyFlow"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CreateCampaignReplyFlowRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          },
          "flowKey": {
            "type": "string",
            "format": "uuid",
            "description": "Existing flow key to add a revision to. Omit to start a new reply flow.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "revision": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000000,
            "description": "Revision number. Defaults to 1; each key and revision can be created once.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `1000000` (inclusive) |"
          },
          "definition": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignReplyFlowDefinition"
              }
            ],
            "description": "Structured definition for this resource."
          }
        },
        "required": [
          "name",
          "definition"
        ],
        "additionalProperties": false
      },
      "messaging__GetCampaignReplyFlowResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignReplyFlow"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__SetCampaignReplyFlowResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "object",
            "properties": {
              "campaignId": {
                "type": "string",
                "format": "uuid",
                "description": "Identifier for the campaign.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
              },
              "replyFlowId": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid",
                "description": "Identifier for the reply flow.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
              }
            },
            "required": [
              "campaignId",
              "replyFlowId"
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__SetCampaignReplyFlowRequest": {
        "type": "object",
        "properties": {
          "replyFlowId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Reply flow revision to run after replies, or null to detach it.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        },
        "required": [
          "replyFlowId"
        ],
        "additionalProperties": false
      },
      "messaging__CampaignRecipient": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier for this resource."
          },
          "phone": {
            "type": "string",
            "description": "Phone number in international format."
          },
          "variables": {
            "type": "object",
            "additionalProperties": {},
            "description": "Structured variables values for this messaging campaign recipient."
          },
          "variantKey": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies variant key for this messaging campaign recipient.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "status": {
            "type": "string",
            "enum": [
              "queued",
              "sending",
              "sent",
              "delivered",
              "read",
              "failed",
              "skipped"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `queued` | Queued. |\n| `sending` | Sending. |\n| `sent` | Sent. |\n| `delivered` | Delivered. |\n| `read` | Read. |\n| `failed` | Failed. |\n| `skipped` | Skipped. |"
          },
          "attempts": {
            "type": "integer",
            "description": "Specifies attempts for this messaging campaign recipient."
          },
          "lastError": {
            "type": [
              "string",
              "null"
            ],
            "description": "Legacy alias of the normalized `failureReason` code. Raw stored errors are never returned.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "failureReason": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "opted_out",
              "cold_held",
              "campaign_cancelled",
              "invalid_recipient",
              "session_not_connected",
              "ack_timeout",
              "blocked_by_safety",
              "send_failed",
              "missing_variable",
              "frequency_cap",
              "other",
              null
            ],
            "description": "Why the recipient was not sent, or why its last attempt did not succeed. Null when nothing went wrong. `opted_out`: the number is on the team's opt-out list. `cold_held`: the number never wrote to the sending number and the campaign holds cold sends. `campaign_cancelled`: the campaign was stopped before this recipient was sent. `invalid_recipient`: the number is not a valid WhatsApp address. `session_not_connected`: the sending number was not connected. `ack_timeout`: WhatsApp did not acknowledge the send in time. `blocked_by_safety`: a safety check refused the send before it was attempted; the recipient waits for the campaign to resume. `send_failed`: WhatsApp refused the send, or its outcome could not be confirmed. `missing_variable`: the campaign was launched with `skipMissingVariables` and the recipient had no value and no fallback for a variable. `frequency_cap`: the recipient reached the team's or campaign's rolling contact frequency cap. `other`: any other reason. New codes may be added.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `opted_out` | Opted out. |\n| `cold_held` | Cold held. |\n| `campaign_cancelled` | Campaign cancelled. |\n| `invalid_recipient` | Invalid recipient. |\n| `session_not_connected` | Session not connected. |\n| `ack_timeout` | Ack timeout. |\n| `blocked_by_safety` | Blocked by safety. |\n| `send_failed` | Send failed. |\n| `missing_variable` | Missing variable. |\n| `frequency_cap` | Frequency cap. |\n| `other` | Other. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `opted_out` or `cold_held` or `campaign_cancelled` or `invalid_recipient` or `session_not_connected` or `ack_timeout` or `blocked_by_safety` or `send_failed` or `missing_variable` or `frequency_cap` or `other` |\n| Alternative 2 | `null` |"
          },
          "externalMessageId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Identifier for the external message.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "queuedAt": {
            "type": "number",
            "description": "Timestamp for queued at."
          },
          "sentAt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Timestamp for sent at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "deliveredAt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Timestamp for delivered at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "readAt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Timestamp for read at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "failedAt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Timestamp for failed at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "respondedAt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Timestamp for responded at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "messagesSent": {
            "type": "integer",
            "minimum": 0,
            "description": "Messages of the campaign's message sequence this recipient has been sent. `status`, `sentAt`, `deliveredAt` and `readAt` describe the first message.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "nextMessageAt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Earliest time the next message is sent, in Unix milliseconds. Null when no message is waiting.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "sequenceError": {
            "type": [
              "string",
              "null"
            ],
            "description": "Why the remaining messages will not be sent: `opted_out`, `campaign_cancelled`, `sender_unavailable`, or the failure class of the message that failed, such as `conversation_window_closed`. Null otherwise.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "followUp": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
              },
              "numberId": {
                "type": "string",
                "format": "uuid",
                "description": "Identifier for the number.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
              },
              "status": {
                "type": "string",
                "enum": [
                  "waiting_receipt",
                  "scheduled",
                  "sending",
                  "sent",
                  "cancelled",
                  "expired",
                  "failed",
                  "outcome_unknown"
                ],
                "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `waiting_receipt` | Waiting receipt. |\n| `scheduled` | Scheduled. |\n| `sending` | Sending. |\n| `sent` | Sent. |\n| `cancelled` | Cancelled. |\n| `expired` | Expired. |\n| `failed` | Failed. |\n| `outcome_unknown` | Outcome unknown. |"
              },
              "anchorKind": {
                "type": [
                  "string",
                  "null"
                ],
                "enum": [
                  "delivered",
                  "read",
                  null
                ],
                "description": "Category assigned to anchor.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `delivered` | Delivered. |\n| `read` | Read. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `delivered` or `read` |\n| Alternative 2 | `null` |"
              },
              "firstDeliveredAt": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Timestamp for first delivered at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
              },
              "firstReadAt": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Timestamp for first read at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
              },
              "dueAt": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Timestamp for due at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
              },
              "expiresAt": {
                "type": "number",
                "description": "Unix timestamp in milliseconds when this resource expires."
              },
              "sentAt": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Timestamp for sent at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
              },
              "deliveredAt": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Timestamp for delivered at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
              },
              "readAt": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Timestamp for read at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
              },
              "repliedAt": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Timestamp for replied at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
              },
              "reason": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Reason for the reported state or outcome.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
              },
              "commandId": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid",
                "description": "Identifier for the command.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
              }
            },
            "required": [
              "id",
              "numberId",
              "status",
              "anchorKind",
              "firstDeliveredAt",
              "firstReadAt",
              "dueAt",
              "expiresAt",
              "sentAt",
              "deliveredAt",
              "readAt",
              "repliedAt",
              "reason",
              "commandId"
            ],
            "additionalProperties": false,
            "description": "Structured follow up values for this messaging campaign recipient.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `status`: `waiting_receipt` or `scheduled` or `sending` or `sent` or `cancelled` or `expired` or `failed` or `outcome_unknown`; Field `anchorKind`: `delivered` or `read` or `null`; Required fields: `id`, `numberId`, `status`, `anchorKind`, `firstDeliveredAt`, `firstReadAt`, `dueAt`, `expiresAt`, `sentAt`, `deliveredAt`, `readAt`, `repliedAt`, `reason`, `commandId` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "id",
          "phone",
          "variables",
          "variantKey",
          "status",
          "attempts",
          "lastError",
          "failureReason",
          "externalMessageId",
          "queuedAt",
          "sentAt",
          "deliveredAt",
          "readAt",
          "failedAt",
          "respondedAt",
          "messagesSent",
          "nextMessageAt",
          "sequenceError",
          "followUp"
        ]
      },
      "messaging__CampaignRecipientPageInfo": {
        "type": "object",
        "properties": {
          "nextCursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies next cursor for this messaging campaign recipient page info.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether more."
          }
        },
        "required": [
          "nextCursor",
          "hasMore"
        ]
      },
      "messaging__ListCampaignRecipientsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__CampaignRecipient"
            },
            "description": "Structured data carried by this object."
          },
          "page": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CampaignRecipientPageInfo"
              }
            ],
            "description": "Specifies page for this messaging list campaign recipients response."
          }
        },
        "required": [
          "success",
          "data",
          "page"
        ]
      },
      "messaging__InvalidRecipientRow": {
        "type": "object",
        "properties": {
          "row": {
            "type": "integer",
            "minimum": 1,
            "description": "1-based position of the entry in the request (or spreadsheet row number for a file import, where the header is row 1).\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
          },
          "reason": {
            "type": "string",
            "enum": [
              "missing_phone",
              "invalid_phone",
              "invalid_variables",
              "invalid_entry"
            ],
            "description": "Reason for the reported state or outcome.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `missing_phone` | Missing phone. |\n| `invalid_phone` | Invalid phone. |\n| `invalid_variables` | Invalid variables. |\n| `invalid_entry` | Invalid entry. |"
          }
        },
        "required": [
          "row",
          "reason"
        ]
      },
      "messaging__AddCampaignRecipientsResult": {
        "type": "object",
        "properties": {
          "campaignId": {
            "type": "string",
            "description": "Identifier for the campaign."
          },
          "added": {
            "type": "integer",
            "description": "Recipients added by this request."
          },
          "recipientCount": {
            "type": "integer",
            "description": "Recipients on the campaign after this request."
          },
          "duplicateCount": {
            "type": "integer",
            "description": "Valid entries skipped because the phone was repeated in the request or is already on the campaign."
          },
          "invalidCount": {
            "type": "integer",
            "description": "Number of invalids."
          },
          "invalidRows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__InvalidRecipientRow"
            },
            "maxItems": 20,
            "description": "Up to 20 invalid entries.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `20` items |"
          }
        },
        "required": [
          "campaignId",
          "added",
          "recipientCount",
          "duplicateCount",
          "invalidCount",
          "invalidRows"
        ]
      },
      "messaging__AddCampaignRecipientsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__AddCampaignRecipientsResult"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__AddCampaignRecipientsRequest": {
        "type": "object",
        "properties": {
          "recipients": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/messaging__CampaignRecipientInput"
            },
            "minItems": 1,
            "maxItems": 1000,
            "description": "Recipients associated with this messaging add campaign recipients request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `1000` items |"
          }
        },
        "required": [
          "recipients"
        ]
      },
      "messaging__QuickLink": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable QuickLink identifier, prefixed `ql_`."
          },
          "url": {
            "type": "string",
            "description": "Hosted connection URL. Share it only with the person holding the phone."
          },
          "session": {
            "type": "string",
            "description": "Session name that receives the connected number."
          },
          "expiresAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Null for new persistent QuickLinks. Legacy links retain their ISO-8601 expiry.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "id",
          "url",
          "session",
          "expiresAt"
        ]
      },
      "messaging__QuickLinkResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__QuickLink"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__QuickLinkConfiguration": {
        "type": "object",
        "properties": {
          "testing": {
            "type": "object",
            "properties": {
              "country": {
                "type": "string",
                "description": "ISO 3166-1 alpha-2 country code."
              },
              "configuration": {
                "type": "object",
                "properties": {
                  "profile": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 128,
                        "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
                      },
                      "status": {
                        "type": "string",
                        "maxLength": 139,
                        "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `139` characters |"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Structured profile values for this configuration."
                  },
                  "accountType": {
                    "type": "string",
                    "enum": [
                      "personal",
                      "business"
                    ],
                    "description": "Category assigned to account.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `personal` | Personal. |\n| `business` | Business. |"
                  },
                  "replyBehavior": {
                    "type": "string",
                    "enum": [
                      "off",
                      "echo"
                    ],
                    "description": "Specifies reply behavior for this configuration.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `echo` | Echo. |"
                  },
                  "failureScenario": {
                    "type": "string",
                    "enum": [
                      "none",
                      "reject-send"
                    ],
                    "description": "Specifies failure scenario for this configuration.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `reject-send` | Reject send. |"
                  },
                  "historyFixtureId": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Identifier for the history fixture.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                  }
                },
                "additionalProperties": false,
                "description": "Structured configuration values for this testing."
              },
              "editable": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "profile.name",
                    "profile.status",
                    "accountType",
                    "replyBehavior",
                    "failureScenario",
                    "historyFixtureId"
                  ]
                },
                "maxItems": 3,
                "description": "Editable associated with this testing.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `profile.name` | Profile.name. |\n| `profile.status` | Profile.status. |\n| `accountType` | Account type. |\n| `replyBehavior` | Reply behavior. |\n| `failureScenario` | Failure scenario. |\n| `historyFixtureId` | History fixture id. |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `3` items |"
              }
            },
            "additionalProperties": false,
            "description": "Structured testing values for this messaging quick link configuration."
          },
          "prefillPhone": {
            "type": "string",
            "pattern": "^\\+?\\d{6,15}$",
            "description": "Specifies prefill phone for this messaging quick link configuration.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\+?\\d{6,15}$` |"
          },
          "connectionPreference": {
            "type": "string",
            "enum": [
              "cloud",
              "linked",
              "both"
            ],
            "description": "Specifies connection preference for this messaging quick link configuration.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `cloud` | Cloud. |\n| `linked` | Linked. |\n| `both` | Both. |"
          },
          "connectionEnforcement": {
            "type": "string",
            "enum": [
              "prefer",
              "force"
            ],
            "description": "Specifies connection enforcement for this messaging quick link configuration.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `prefer` | Prefer. |\n| `force` | Force. |"
          },
          "methods": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "qr",
                "pairing"
              ]
            },
            "minItems": 1,
            "maxItems": 2,
            "description": "Linked Devices methods offered for this connection.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `qr` | Qr. |\n| `pairing` | Pairing. |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `2` items |"
          },
          "defaultMethod": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "qr",
              "pairing",
              null
            ],
            "description": "Linked Devices method opened first. Omit to inherit the saved project setting, or set null to choose by recipient device.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `qr` | Qr. |\n| `pairing` | Pairing. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `qr` or `pairing` |\n| Alternative 2 | `null` |"
          },
          "allowPhoneChange": {
            "type": "boolean",
            "description": "Whether allow phone change."
          },
          "historySync": {
            "type": "object",
            "properties": {
              "consent": {
                "type": "string",
                "enum": [
                  "ask",
                  "force_on",
                  "force_off"
                ],
                "description": "Specifies consent for this history sync.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `ask` | Ask. |\n| `force_on` | Force on. |\n| `force_off` | Force off. |"
              },
              "mode": {
                "type": "string",
                "enum": [
                  "metadata_only",
                  "deliver"
                ],
                "description": "Operating mode selected for this feature.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `metadata_only` | Metadata only. |\n| `deliver` | Deliver. |"
              },
              "requestFull": {
                "type": "boolean",
                "description": "Whether request full."
              }
            },
            "additionalProperties": false,
            "description": "History synchronization behavior for newly connected sessions."
          },
          "hms": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "enabled": {
                    "type": "boolean",
                    "enum": [
                      false
                    ],
                    "description": "Whether this feature is enabled.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `false` | False. |"
                  }
                },
                "required": [
                  "enabled"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "enabled": {
                    "type": "boolean",
                    "enum": [
                      true
                    ],
                    "description": "Whether this feature is enabled.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
                  },
                  "region": {
                    "type": "string",
                    "pattern": "^[a-z0-9][a-z0-9-]{0,31}$",
                    "description": "Specifies region for this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z0-9][a-z0-9-]{0,31}$` |"
                  },
                  "policy": {
                    "type": "string",
                    "enum": [
                      "short",
                      "standard",
                      "extended",
                      "compliance",
                      "enterprise_archive"
                    ],
                    "description": "Specifies policy for this any of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `short` | Short. |\n| `standard` | Standard. |\n| `extended` | Extended. |\n| `compliance` | Compliance. |\n| `enterprise_archive` | Enterprise archive. |"
                  },
                  "retentionDays": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 2555,
                    "description": "Specifies retention days for this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `2555` (inclusive) |"
                  },
                  "policyVersion": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 128,
                    "description": "Specifies policy version for this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
                  },
                  "legalHold": {
                    "type": "boolean",
                    "description": "Whether legal hold."
                  }
                },
                "required": [
                  "enabled",
                  "region",
                  "policy"
                ],
                "additionalProperties": false
              }
            ],
            "description": "Specifies hms for this messaging quick link configuration.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `enabled`: `false`; Required fields: `enabled` |\n| Alternative 2 | Type: `object`; Field `enabled`: `true`; Field `policy`: `short` or `standard` or `extended` or `compliance` or `enterprise_archive`; Required fields: `enabled`, `region`, `policy` |"
          },
          "observation": {
            "type": "object",
            "properties": {
              "presenceMode": {
                "type": "string",
                "enum": [
                  "off",
                  "events",
                  "cache"
                ],
                "description": "Behavior selected for presence.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
              },
              "typingMode": {
                "type": "string",
                "enum": [
                  "off",
                  "events",
                  "cache"
                ],
                "description": "Behavior selected for typing.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
              },
              "labelMode": {
                "type": "string",
                "enum": [
                  "off",
                  "events",
                  "cache",
                  "project"
                ],
                "description": "Behavior selected for label.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |\n| `project` | Project. |"
              },
              "quickReplyMode": {
                "type": "string",
                "enum": [
                  "off",
                  "events",
                  "cache"
                ],
                "description": "Behavior selected for quick reply.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
              }
            },
            "additionalProperties": false,
            "description": "Structured observation values for this messaging quick link configuration."
          }
        },
        "additionalProperties": false,
        "description": "Connection, pairing, phone, and history overrides. Omitted fields inherit saved defaults. Presentation, legal links, and callbacks belong to saved project settings."
      },
      "messaging__CreateQuickLinkRequest": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Project that receives the connected number. Required for organization keys with more than one project.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "customerId": {
            "type": "string",
            "format": "uuid",
            "description": "Customer that owns the connected number when Customers is enabled for the project.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "billingControls": {
            "type": "object",
            "properties": {
              "limitCredits": {
                "type": [
                  "number",
                  "null"
                ],
                "minimum": 0,
                "maximum": 1000000,
                "description": "Specifies limit credits for this billing control.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1000000` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1000000` (inclusive) |"
              },
              "priority": {
                "type": "integer",
                "minimum": 0,
                "maximum": 1000000,
                "description": "Specifies priority for this billing control.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1000000` (inclusive) |"
              }
            },
            "required": [
              "limitCredits",
              "priority"
            ],
            "additionalProperties": false,
            "description": "Initial monthly spending limit and funding priority for a real Number. Requires a team key with billing:manage or a live team owner/admin on Pay-As-You-Go. Applied atomically before pairing admission."
          },
          "externalId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "pattern": "^[^\\x00-\\x1f\\x7f]+$",
            "description": "Integrator correlation copied to the resulting session. May repeat across invitations; does not grant access.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |\n| Pattern | `^[^\\x00-\\x1f\\x7f]+$` |"
          },
          "configuration": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__QuickLinkConfiguration"
              }
            ],
            "description": "Specifies configuration for this messaging create quick link request."
          }
        },
        "additionalProperties": false
      },
      "messaging__CloudSyncStatus": {
        "type": "object",
        "properties": {
          "contacts": {
            "type": "object",
            "properties": {
              "request": {
                "type": "string",
                "enum": [
                  "not_applicable",
                  "not_requested",
                  "pending",
                  "requesting",
                  "accepted",
                  "declined",
                  "unknown"
                ],
                "description": "Accepted means Meta returned a request receipt; it does not prove all contacts were delivered. Unknown means a one-time request may have been accepted without a saved receipt.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `not_applicable` | Not applicable. |\n| `not_requested` | Not requested. |\n| `pending` | Pending. |\n| `requesting` | Requesting. |\n| `accepted` | Accepted. |\n| `declined` | Declined. |\n| `unknown` | Unknown. |"
              },
              "receiptRecorded": {
                "type": "boolean",
                "description": "Whether receipt recorded."
              }
            },
            "required": [
              "request",
              "receiptRecorded"
            ],
            "description": "Contacts returned or affected by this operation."
          },
          "history": {
            "type": "object",
            "properties": {
              "request": {
                "type": "string",
                "enum": [
                  "not_applicable",
                  "not_requested",
                  "pending",
                  "requesting",
                  "accepted",
                  "declined",
                  "unknown"
                ],
                "description": "Specifies request for this history.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `not_applicable` | Not applicable. |\n| `not_requested` | Not requested. |\n| `pending` | Pending. |\n| `requesting` | Requesting. |\n| `accepted` | Accepted. |\n| `declined` | Declined. |\n| `unknown` | Unknown. |"
              },
              "receiptRecorded": {
                "type": "boolean",
                "description": "Whether receipt recorded."
              },
              "delivery": {
                "type": "string",
                "enum": [
                  "not_applicable",
                  "not_requested",
                  "unconfirmed",
                  "partial",
                  "complete",
                  "declined"
                ],
                "description": "Partial and complete describe the latest history progress reported by Meta. Unconfirmed does not mean that no history exists.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `not_applicable` | Not applicable. |\n| `not_requested` | Not requested. |\n| `unconfirmed` | Unconfirmed. |\n| `partial` | Partial. |\n| `complete` | Complete. |\n| `declined` | Declined. |"
              }
            },
            "required": [
              "request",
              "receiptRecorded",
              "delivery"
            ],
            "description": "Structured history values for this messaging cloud sync status."
          }
        },
        "required": [
          "contacts",
          "history"
        ]
      },
      "messaging__QuickLinkStatus": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier for this resource."
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "opened",
              "linked",
              "connected",
              "failed",
              "cancelled"
            ],
            "description": "`linked`: for Linked Devices, the device is linked and the recipient has not confirmed; for Meta Cloud API, the number is connected to Meta and is still being made ready to send. For Meta Cloud API, `connected` requires every readiness check to pass, a successful runtime connection, and the recipient's confirmation. `failed` carries the reason in `errorCode`.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending` | Pending. |\n| `opened` | Opened. |\n| `linked` | Linked. |\n| `connected` | Connected. |\n| `failed` | Failed. |\n| `cancelled` | Cancelled. |"
          },
          "session": {
            "type": "string",
            "description": "Identifier of the connected Polymorfa session."
          },
          "expiresAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO 8601 timestamp when this resource expires.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "openedAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Timestamp for opened at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "connectedAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Timestamp for connected at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "phone": {
            "type": [
              "string",
              "null"
            ],
            "description": "Connected phone in E.164 once the link is connected.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "errorCode": {
            "type": [
              "string",
              "null"
            ],
            "description": "Machine-readable error code for this messaging quick link status.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "onboarding": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "stage": {
                "type": "string",
                "description": "Specifies stage for this onboarding."
              },
              "connection": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Specifies connection for this onboarding.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
              },
              "coexistence": {
                "type": [
                  "boolean",
                  "null"
                ],
                "description": "Whether coexistence.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `boolean` |\n| Alternative 2 | `null` |"
              },
              "contactsSync": {
                "type": "string",
                "description": "Specifies contacts sync for this onboarding."
              },
              "historySync": {
                "type": "string",
                "description": "History synchronization behavior for newly connected sessions."
              },
              "historyProgress": {
                "type": "integer",
                "minimum": 0,
                "maximum": 100,
                "description": "Specifies history progress for this onboarding.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `100` (inclusive) |"
              },
              "errorCode": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Machine-readable error code for this onboarding.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
              },
              "sync": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/messaging__CloudSyncStatus"
                  }
                ],
                "description": "Specifies sync for this onboarding."
              }
            },
            "required": [
              "stage",
              "connection",
              "coexistence",
              "contactsSync",
              "historySync",
              "historyProgress",
              "errorCode",
              "sync"
            ],
            "description": "Durable connection and sync progress; omitted when the onboarding service is unavailable, null when no record exists. Sync request and delivery evidence are independent of the connection stage.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `stage`, `connection`, `coexistence`, `contactsSync`, `historySync`, `historyProgress`, `errorCode`, `sync` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "id",
          "status",
          "session",
          "expiresAt",
          "openedAt",
          "connectedAt",
          "phone",
          "errorCode"
        ]
      },
      "messaging__QuickLinkStatusResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__QuickLinkStatus"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CloudCredentialHealth": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "healthy",
              "action_required",
              "unknown"
            ],
            "description": "`healthy`: every check passed. `action_required`: a check failed and the Number needs reauthorization or a change in Meta. `unknown`: Meta could not be reached or returned an incomplete answer; the check is retried. `pending`: not checked since the credentials were saved.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending` | Pending. |\n| `healthy` | Healthy. |\n| `action_required` | Action required. |\n| `unknown` | Unknown. |"
          },
          "checkedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "When the last validation completed, or null before the first one.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "nextCheckAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "When the next scheduled validation becomes due.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "token": {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "valid",
                  "expired",
                  "invalid",
                  "unknown"
                ],
                "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `valid` | Valid. |\n| `expired` | Expired. |\n| `invalid` | Invalid. |\n| `unknown` | Unknown. |"
              },
              "expiresAt": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date-time",
                "description": "Expiry reported by Meta; null for a token without an expiry or when unknown.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
              }
            },
            "required": [
              "status",
              "expiresAt"
            ],
            "description": "Opaque token required by the target operation."
          },
          "missingPermissions": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "whatsapp_business_messaging",
                "whatsapp_business_management"
              ]
            },
            "description": "Required permissions the saved token lacks for this WhatsApp Business Account.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `whatsapp_business_messaging` | Whatsapp business messaging. |\n| `whatsapp_business_management` | Whatsapp business management. |"
          },
          "phoneRegistration": {
            "type": "string",
            "enum": [
              "registered",
              "not_registered",
              "unknown"
            ],
            "description": "Whether Meta reports the phone number as connected to the Cloud API.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `registered` | Registered. |\n| `not_registered` | Not registered. |\n| `unknown` | Unknown. |"
          },
          "webhookSubscription": {
            "type": "string",
            "enum": [
              "subscribed",
              "not_subscribed",
              "unknown"
            ],
            "description": "Whether the app that issued the token is subscribed to the WhatsApp Business Account's webhooks.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `subscribed` | Subscribed. |\n| `not_subscribed` | Not subscribed. |\n| `unknown` | Unknown. |"
          },
          "failureCode": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "app_credentials_rejected",
              "token_expired",
              "token_invalid",
              "token_app_mismatch",
              "permission_missing",
              "phone_not_registered",
              "webhook_not_subscribed",
              "credentials_unreadable",
              "meta_unavailable",
              "meta_response_invalid",
              null
            ],
            "description": "The first failed or inconclusive check, or null when healthy.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `app_credentials_rejected` | App credentials rejected. |\n| `token_expired` | Token expired. |\n| `token_invalid` | Token invalid. |\n| `token_app_mismatch` | Token app mismatch. |\n| `permission_missing` | Permission missing. |\n| `phone_not_registered` | Phone not registered. |\n| `webhook_not_subscribed` | Webhook not subscribed. |\n| `credentials_unreadable` | Credentials unreadable. |\n| `meta_unavailable` | Meta unavailable. |\n| `meta_response_invalid` | Meta response invalid. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `app_credentials_rejected` or `token_expired` or `token_invalid` or `token_app_mismatch` or `permission_missing` or `phone_not_registered` or `webhook_not_subscribed` or `credentials_unreadable` or `meta_unavailable` or `meta_response_invalid` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "status",
          "checkedAt",
          "nextCheckAt",
          "token",
          "missingPermissions",
          "phoneRegistration",
          "webhookSubscription",
          "failureCode"
        ]
      },
      "messaging__CloudCredentialHealthResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CloudCredentialHealth"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__CloudReauthorization": {
        "type": "object",
        "properties": {
          "quicklinkId": {
            "type": "string",
            "description": "QuickLink identifier, prefixed `ql_`. Read its progress with `GET /messaging/quicklinks/{id}`."
          },
          "url": {
            "type": "string",
            "description": "Hosted link. Share it only with the person who manages the Number's Meta assets."
          },
          "session": {
            "type": "string",
            "description": "Identifier of the connected Polymorfa session."
          }
        },
        "required": [
          "quicklinkId",
          "url",
          "session"
        ]
      },
      "messaging__CloudReauthorizationResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__CloudReauthorization"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "messaging__PublicQuickLinkError": {
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string",
                "description": "Stable machine-readable code for this result."
              },
              "message": {
                "type": "string",
                "description": "Human-readable message associated with this result."
              }
            },
            "required": [
              "code",
              "message"
            ],
            "description": "Error details returned when the operation fails."
          },
          "data": {
            "type": "object",
            "properties": {
              "candidates": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "phone": {
                      "type": "string",
                      "description": "Phone number in international format."
                    },
                    "whatsappPhone": {
                      "type": "string",
                      "description": "Specifies whatsapp phone for this candidate."
                    },
                    "registered": {
                      "type": [
                        "boolean",
                        "null"
                      ],
                      "description": "Whether WhatsApp registration was confirmed. Null means the result is unknown.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `boolean` |\n| Alternative 2 | `null` |"
                    },
                    "pushName": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "WhatsApp display name reported by the sender's client.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
                    },
                    "pictureUrl": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "URL for the picture.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
                    },
                    "accountType": {
                      "type": "string",
                      "enum": [
                        "whatsapp",
                        "business_app",
                        "cloud_api",
                        "coexistence",
                        "unknown",
                        "unregistered"
                      ],
                      "description": "Category assigned to account.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `whatsapp` | Whatsapp. |\n| `business_app` | Business app. |\n| `cloud_api` | Cloud api. |\n| `coexistence` | Coexistence. |\n| `unknown` | Unknown. |\n| `unregistered` | Unregistered. |"
                    }
                  },
                  "required": [
                    "phone",
                    "registered",
                    "pushName",
                    "pictureUrl"
                  ]
                },
                "description": "Candidates associated with this data."
              }
            },
            "required": [
              "candidates"
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "error"
        ]
      },
      "messaging__EmbeddedSignupResult": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4096,
            "description": "Stable machine-readable code for this result.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `4096` characters |"
          },
          "wabaId": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Identifier for the waba.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\d+$` |"
          },
          "phoneNumberId": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Identifier for the phone number.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\d+$` |"
          },
          "coexistence": {
            "type": "boolean",
            "default": true,
            "description": "Whether coexistence."
          },
          "historySync": {
            "type": "boolean",
            "default": false,
            "description": "History synchronization behavior for newly connected sessions."
          }
        },
        "required": [
          "code",
          "wabaId",
          "phoneNumberId"
        ],
        "additionalProperties": false
      },
      "messaging__QuickLinkState": {
        "type": "object",
        "properties": {
          "testing": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "country": {
                "type": "string",
                "description": "ISO 3166-1 alpha-2 country code."
              },
              "configuration": {
                "type": "object",
                "properties": {
                  "profile": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 128,
                        "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
                      },
                      "status": {
                        "type": "string",
                        "maxLength": 139,
                        "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `139` characters |"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Structured profile values for this configuration."
                  },
                  "accountType": {
                    "type": "string",
                    "enum": [
                      "personal",
                      "business"
                    ],
                    "description": "Category assigned to account.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `personal` | Personal. |\n| `business` | Business. |"
                  },
                  "replyBehavior": {
                    "type": "string",
                    "enum": [
                      "off",
                      "echo"
                    ],
                    "description": "Specifies reply behavior for this configuration.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `echo` | Echo. |"
                  },
                  "failureScenario": {
                    "type": "string",
                    "enum": [
                      "none",
                      "reject-send"
                    ],
                    "description": "Specifies failure scenario for this configuration.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `reject-send` | Reject send. |"
                  },
                  "historyFixtureId": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Identifier for the history fixture.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                  }
                },
                "additionalProperties": false,
                "description": "Structured configuration values for this testing."
              },
              "editable": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "profile.name",
                    "profile.status",
                    "accountType",
                    "replyBehavior",
                    "failureScenario",
                    "historyFixtureId"
                  ]
                },
                "description": "Editable associated with this testing.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `profile.name` | Profile.name. |\n| `profile.status` | Profile.status. |\n| `accountType` | Account type. |\n| `replyBehavior` | Reply behavior. |\n| `failureScenario` | Failure scenario. |\n| `historyFixtureId` | History fixture id. |"
              },
              "state": {
                "type": "string",
                "enum": [
                  "pending",
                  "starting",
                  "ready"
                ],
                "description": "Current lifecycle state of this resource.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending` | Pending. |\n| `starting` | Starting. |\n| `ready` | Ready. |"
              },
              "phone": {
                "type": "string",
                "description": "Phone number in international format."
              }
            },
            "required": [
              "country",
              "configuration",
              "editable",
              "state",
              "phone"
            ],
            "description": "Structured testing values for this messaging quick link state.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `state`: `pending` or `starting` or `ready`; Required fields: `country`, `configuration`, `editable`, `state`, `phone` |\n| Alternative 2 | `null` |"
          },
          "historyConfiguration": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "metadata_only",
                  "deliver"
                ],
                "description": "Operating mode selected for this feature.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `metadata_only` | Metadata only. |\n| `deliver` | Deliver. |"
              },
              "requestFull": {
                "type": "boolean",
                "description": "Whether request full."
              }
            },
            "required": [
              "mode",
              "requestFull"
            ],
            "description": "Structured history configuration values for this messaging quick link state.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `mode`: `metadata_only` or `deliver`; Required fields: `mode`, `requestFull` |\n| Alternative 2 | `null` |"
          },
          "historyConsent": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "pending",
              "accepted",
              "declined",
              null
            ],
            "description": "Specifies history consent for this messaging quick link state.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending` | Pending. |\n| `accepted` | Accepted. |\n| `declined` | Declined. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `pending` or `accepted` or `declined` |\n| Alternative 2 | `null` |"
          },
          "id": {
            "type": "string",
            "description": "Identifier for this resource."
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "opened",
              "linked",
              "connected",
              "failed",
              "cancelled"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending` | Pending. |\n| `opened` | Opened. |\n| `linked` | Linked. |\n| `connected` | Connected. |\n| `failed` | Failed. |\n| `cancelled` | Cancelled. |"
          },
          "expiresAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO 8601 timestamp when this resource expires.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "redirectUrl": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "Snapshotted failure callback for a failed link. Omitted for non-failed states.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uri` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
          },
          "connections": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "cloud",
                "linked"
              ]
            },
            "description": "Connections associated with this messaging quick link state.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `cloud` | Cloud. |\n| `linked` | Linked. |"
          },
          "selectedConnection": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "cloud",
              "linked",
              null
            ],
            "description": "Specifies selected connection for this messaging quick link state.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `cloud` | Cloud. |\n| `linked` | Linked. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `cloud` or `linked` |\n| Alternative 2 | `null` |"
          },
          "connectionPreference": {
            "type": "string",
            "enum": [
              "cloud",
              "linked",
              "both"
            ],
            "description": "Specifies connection preference for this messaging quick link state.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `cloud` | Cloud. |\n| `linked` | Linked. |\n| `both` | Both. |"
          },
          "connectionEnforcement": {
            "type": "string",
            "enum": [
              "prefer",
              "force"
            ],
            "description": "Specifies connection enforcement for this messaging quick link state.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `prefer` | Prefer. |\n| `force` | Force. |"
          },
          "cloud": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "appId": {
                "type": "string",
                "description": "Identifier of the connected application."
              },
              "configId": {
                "type": "string",
                "description": "Identifier for the config."
              }
            },
            "required": [
              "appId",
              "configId"
            ],
            "description": "Structured cloud values for this messaging quick link state.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `appId`, `configId` |\n| Alternative 2 | `null` |"
          },
          "onboarding": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "stage": {
                "type": "string",
                "description": "Specifies stage for this onboarding."
              },
              "connection": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Specifies connection for this onboarding.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
              },
              "coexistence": {
                "type": [
                  "boolean",
                  "null"
                ],
                "description": "Whether coexistence.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `boolean` |\n| Alternative 2 | `null` |"
              },
              "contactsSync": {
                "type": "string",
                "description": "Specifies contacts sync for this onboarding."
              },
              "historySync": {
                "type": "string",
                "description": "History synchronization behavior for newly connected sessions."
              },
              "historyProgress": {
                "type": "integer",
                "minimum": 0,
                "maximum": 100,
                "description": "Specifies history progress for this onboarding.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `100` (inclusive) |"
              },
              "errorCode": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Machine-readable error code for this onboarding.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
              },
              "sync": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/messaging__CloudSyncStatus"
                  }
                ],
                "description": "Specifies sync for this onboarding."
              }
            },
            "required": [
              "stage",
              "connection",
              "coexistence",
              "contactsSync",
              "historySync",
              "historyProgress",
              "errorCode",
              "sync"
            ],
            "description": "Structured onboarding values for this messaging quick link state.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `stage`, `connection`, `coexistence`, `contactsSync`, `historySync`, `historyProgress`, `errorCode`, `sync` |\n| Alternative 2 | `null` |"
          },
          "methods": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "qr",
                "pairing"
              ]
            },
            "description": "Connection methods enabled for the widget.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `qr` | Qr. |\n| `pairing` | Pairing. |"
          },
          "defaultMethod": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "qr",
              "pairing",
              null
            ],
            "description": "Specifies default method for this messaging quick link state.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `qr` | Qr. |\n| `pairing` | Pairing. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `qr` or `pairing` |\n| Alternative 2 | `null` |"
          },
          "businessName": {
            "type": "string",
            "description": "Business name shown to the customer."
          },
          "headline": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies headline for this messaging quick link state.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Human-readable description of this resource.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "successMessage": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies success message for this messaging quick link state.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "supportUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "URL for the support.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "privacyUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "URL for the privacy.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "termsUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "URL for the terms.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "theme": {
            "type": "string",
            "enum": [
              "light",
              "dark",
              "system"
            ],
            "description": "Visual theme used by the widget.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `light` | Light. |\n| `dark` | Dark. |\n| `system` | System. |"
          },
          "accent": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies accent for this messaging quick link state.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "shape": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "square",
              "rounded",
              "pill",
              null
            ],
            "description": "Specifies shape for this messaging quick link state.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `square` | Square. |\n| `rounded` | Rounded. |\n| `pill` | Pill. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `square` or `rounded` or `pill` |\n| Alternative 2 | `null` |"
          },
          "radiusPx": {
            "type": [
              "number",
              "null"
            ],
            "description": "Specifies radius px for this messaging quick link state.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "logoUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "URL for the logo.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "hideWatermark": {
            "type": "boolean",
            "description": "Whether hide watermark."
          },
          "historySync": {
            "type": "string",
            "enum": [
              "ask",
              "force_on",
              "force_off"
            ],
            "description": "History synchronization behavior for newly connected sessions.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `ask` | Ask. |\n| `force_on` | Force on. |\n| `force_off` | Force off. |"
          },
          "phoneStep": {
            "type": "object",
            "properties": {
              "confirmed": {
                "type": "boolean",
                "description": "Whether confirmed."
              },
              "allowChange": {
                "type": "boolean",
                "description": "Whether allow change."
              },
              "noNumber": {
                "type": "boolean",
                "description": "Whether no number."
              },
              "allowNoNumber": {
                "type": "boolean",
                "description": "Whether allow no number."
              }
            },
            "required": [
              "confirmed",
              "allowChange",
              "noNumber",
              "allowNoNumber"
            ],
            "description": "Structured phone step values for this messaging quick link state."
          },
          "prefillPhone": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies prefill phone for this messaging quick link state.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "phoneIdentity": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "registered": {
                "type": [
                  "boolean",
                  "null"
                ],
                "description": "Whether WhatsApp registration was confirmed. Null means the result is unknown.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `boolean` |\n| Alternative 2 | `null` |"
              },
              "phone": {
                "type": "string",
                "description": "Phone number in international format."
              },
              "whatsappPhone": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Specifies whatsapp phone for this phone identity.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
              },
              "accountType": {
                "type": "string",
                "enum": [
                  "whatsapp",
                  "business_app",
                  "cloud_api",
                  "coexistence",
                  "unknown",
                  "unregistered"
                ],
                "description": "Category assigned to account.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `whatsapp` | Whatsapp. |\n| `business_app` | Business app. |\n| `cloud_api` | Cloud api. |\n| `coexistence` | Coexistence. |\n| `unknown` | Unknown. |\n| `unregistered` | Unregistered. |"
              },
              "pushName": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "WhatsApp display name reported by the sender's client.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
              },
              "pictureUrl": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uri",
                "description": "URL for the picture.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uri` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
              }
            },
            "required": [
              "registered",
              "phone",
              "whatsappPhone",
              "accountType",
              "pushName",
              "pictureUrl"
            ],
            "description": "Structured phone identity values for this messaging quick link state.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `accountType`: `whatsapp` or `business_app` or `cloud_api` or `coexistence` or `unknown` or `unregistered`; Required fields: `registered`, `phone`, `whatsappPhone`, `accountType`, `pushName`, `pictureUrl` |\n| Alternative 2 | `null` |"
          },
          "customer": {
            "type": "boolean",
            "description": "True when the link assigns the number to a Customer."
          },
          "session": {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "description": "Current status of this resource or operation."
              },
              "phone": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Phone number in international format.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
              }
            },
            "required": [
              "status",
              "phone"
            ],
            "description": "Identifier of the connected Polymorfa session."
          },
          "qrSvg": {
            "type": [
              "string",
              "null"
            ],
            "description": "Inline SVG of the current WhatsApp QR code, when the QR method is offered and the number is not linked yet.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "tunnelAvailable": {
            "type": "boolean",
            "description": "Whether a new secure pairing channel may currently be admitted for this link."
          },
          "errorCode": {
            "type": [
              "string",
              "null"
            ],
            "description": "Machine-readable error code for this messaging quick link state.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "testing",
          "historyConfiguration",
          "historyConsent",
          "id",
          "status",
          "expiresAt",
          "connections",
          "selectedConnection",
          "connectionPreference",
          "connectionEnforcement",
          "cloud",
          "onboarding",
          "methods",
          "defaultMethod",
          "businessName",
          "headline",
          "description",
          "successMessage",
          "supportUrl",
          "privacyUrl",
          "termsUrl",
          "theme",
          "accent",
          "shape",
          "radiusPx",
          "logoUrl",
          "hideWatermark",
          "historySync",
          "phoneStep",
          "prefillPhone",
          "phoneIdentity",
          "customer",
          "session",
          "qrSvg",
          "errorCode"
        ]
      },
      "messaging__QuickLinkCodeRequest": {
        "type": "object",
        "properties": {
          "phone": {
            "type": "string",
            "minLength": 6,
            "maxLength": 20,
            "description": "Phone number in international format.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `6` through `20` characters |"
          }
        },
        "required": [
          "phone"
        ]
      },
      "messaging__QuickLinkConfirmRequest": {
        "type": "object",
        "properties": {
          "historySync": {
            "type": "boolean",
            "description": "History synchronization behavior for newly connected sessions."
          }
        }
      },
      "messaging__EmbeddedSignupRequest": {
        "type": "object",
        "properties": {
          "quicklinkId": {
            "type": "string",
            "pattern": "^ql_[a-zA-Z0-9]+$",
            "description": "Identifier for the quicklink.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^ql_[a-zA-Z0-9]+$` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "result": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__EmbeddedSignupResult"
              }
            ],
            "description": "Specifies result for this messaging embedded signup request."
          }
        },
        "required": [
          "quicklinkId"
        ],
        "additionalProperties": false
      },
      "messaging__TestEventFixtureList": {
        "type": "object",
        "properties": {
          "fixtures": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "enum": [
                    "message.received",
                    "message.ack",
                    "message.failed",
                    "call.received",
                    "call.missed",
                    "call.ended",
                    "session.status",
                    "session.restriction_updated",
                    "template.status"
                  ],
                  "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `message.received` | Message.received. |\n| `message.ack` | Message.ack. |\n| `message.failed` | Message.failed. |\n| `call.received` | Call.received. |\n| `call.missed` | Call.missed. |\n| `call.ended` | Call.ended. |\n| `session.status` | Session.status. |\n| `session.restriction_updated` | Session.restriction updated. |\n| `template.status` | Template.status. |"
                },
                "description": {
                  "type": "string",
                  "description": "Human-readable description of this resource."
                },
                "overrides": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "Overrides associated with this fixture."
                }
              },
              "required": [
                "name",
                "description",
                "overrides"
              ]
            },
            "description": "Fixtures associated with this messaging test event fixture list."
          }
        },
        "required": [
          "fixtures"
        ]
      },
      "messaging__TriggerTestEventResponse": {
        "type": "object",
        "properties": {
          "event": {
            "type": "string",
            "enum": [
              "message.received",
              "message.ack",
              "message.failed",
              "call.received",
              "call.missed",
              "call.ended",
              "session.status",
              "session.restriction_updated",
              "template.status"
            ],
            "description": "Specifies event for this messaging trigger test event response.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `message.received` | Message.received. |\n| `message.ack` | Message.ack. |\n| `message.failed` | Message.failed. |\n| `call.received` | Call.received. |\n| `call.missed` | Call.missed. |\n| `call.ended` | Call.ended. |\n| `session.status` | Session.status. |\n| `session.restriction_updated` | Session.restriction updated. |\n| `template.status` | Template.status. |"
          },
          "session": {
            "type": "string",
            "description": "Identifier of the connected Polymorfa session."
          },
          "delivery": {
            "type": "string",
            "enum": [
              "generated",
              "simulated"
            ],
            "description": "Specifies delivery for this messaging trigger test event response.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `generated` | Generated. |\n| `simulated` | Simulated. |"
          },
          "eventId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "source": {
            "type": "string",
            "enum": [
              "test",
              "runtime"
            ],
            "description": "Specifies source for this messaging trigger test event response.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `test` | Test. |\n| `runtime` | Runtime. |"
          }
        },
        "required": [
          "event",
          "session",
          "delivery",
          "eventId",
          "source"
        ]
      },
      "messaging__TestEventOverrides": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4096,
            "description": "Text content carried by this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `4096` characters |"
          },
          "from": {
            "type": "string",
            "pattern": "^\\+[1-9]\\d{7,14}$",
            "description": "Stable identifier for the conversation or account that originated the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\+[1-9]\\d{7,14}$` |"
          },
          "pushName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "WhatsApp display name reported by the sender's client.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |"
          },
          "mediaType": {
            "type": "string",
            "enum": [
              "image",
              "video",
              "audio",
              "document",
              "sticker"
            ],
            "description": "Category assigned to media.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `image` | Image. |\n| `video` | Video. |\n| `audio` | Audio. |\n| `document` | Document. |\n| `sticker` | Sticker. |"
          },
          "caption": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024,
            "description": "Caption shown with the attached media.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `1024` characters |"
          },
          "ackStatus": {
            "type": "string",
            "enum": [
              "delivered",
              "read",
              "played",
              "error"
            ],
            "description": "Specifies ack status for this messaging test event override.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `delivered` | Delivered. |\n| `read` | Read. |\n| `played` | Played. |\n| `error` | Error. |"
          },
          "messageId": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Polymorfa message ID. Use the Polymorfa message's `id` for actions and replies.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
          },
          "failureReason": {
            "type": "string",
            "enum": [
              "invalid_recipient",
              "session_not_connected",
              "ack_timeout",
              "send_failed",
              "blocked_by_safety"
            ],
            "description": "Specifies failure reason for this messaging test event override.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `invalid_recipient` | Invalid recipient. |\n| `session_not_connected` | Session not connected. |\n| `ack_timeout` | Ack timeout. |\n| `send_failed` | Send failed. |\n| `blocked_by_safety` | Blocked by safety. |"
          },
          "video": {
            "type": "boolean",
            "description": "Whether video."
          },
          "durationSeconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 86400,
            "description": "Duration in seconds.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `86400` (inclusive) |"
          },
          "callEndReason": {
            "type": "string",
            "enum": [
              "user_hangup",
              "timeout",
              "lost_connection",
              "rejected",
              "call_restricted"
            ],
            "description": "Specifies call end reason for this messaging test event override.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `user_hangup` | User hangup. |\n| `timeout` | Timeout. |\n| `lost_connection` | Lost connection. |\n| `rejected` | Rejected. |\n| `call_restricted` | Call restricted. |"
          },
          "restrictionActive": {
            "type": "boolean",
            "description": "Whether restriction active."
          },
          "status": {
            "type": "string",
            "enum": [
              "CONNECTING",
              "CONNECTED",
              "DISCONNECTED"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `CONNECTING` | Connecting. |\n| `CONNECTED` | Connected. |\n| `DISCONNECTED` | Disconnected. |"
          },
          "statusReason": {
            "type": "string",
            "enum": [
              "SCAN_QR",
              "AUTO_RECONNECT",
              "FAILED",
              "MANUAL_STOP",
              "QR_TIMEOUT",
              "LOGGED_OUT",
              "TEMPORARY_BAN",
              "STREAM_ERROR"
            ],
            "description": "Reason for the current status.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `SCAN_QR` | Scan qr. |\n| `AUTO_RECONNECT` | Auto reconnect. |\n| `FAILED` | Failed. |\n| `MANUAL_STOP` | Manual stop. |\n| `QR_TIMEOUT` | Qr timeout. |\n| `LOGGED_OUT` | Logged out. |\n| `TEMPORARY_BAN` | Temporary ban. |\n| `STREAM_ERROR` | Stream error. |"
          },
          "templateName": {
            "type": "string",
            "pattern": "^[a-z0-9_]{1,512}$",
            "description": "Human-readable template name for this messaging test event override.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z0-9_]{1,512}$` |"
          },
          "templateStatus": {
            "type": "string",
            "enum": [
              "APPROVED",
              "REJECTED"
            ],
            "description": "Specifies template status for this messaging test event override.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `APPROVED` | Approved. |\n| `REJECTED` | Rejected. |"
          },
          "reason": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "Reason for the reported state or outcome.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
          }
        },
        "additionalProperties": false
      },
      "messaging__TriggerTestEventRequest": {
        "type": "object",
        "properties": {
          "session": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Test number session name in the project.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          },
          "event": {
            "type": "string",
            "enum": [
              "message.received",
              "message.ack",
              "message.failed",
              "call.received",
              "call.missed",
              "call.ended",
              "session.status",
              "session.restriction_updated",
              "template.status"
            ],
            "description": "Fixture name. Each name is the event type it produces.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `message.received` | Message.received. |\n| `message.ack` | Message.ack. |\n| `message.failed` | Message.failed. |\n| `call.received` | Call.received. |\n| `call.missed` | Call.missed. |\n| `call.ended` | Call.ended. |\n| `session.status` | Session.status. |\n| `session.restriction_updated` | Session.restriction updated. |\n| `template.status` | Template.status. |"
          },
          "overrides": {
            "allOf": [
              {
                "$ref": "#/components/schemas/messaging__TestEventOverrides"
              }
            ],
            "description": "Specifies overrides for this messaging trigger test event request."
          },
          "fromSession": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "message.received only. Send a simulated text message from this other connected Test number in the same project instead of generating an event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          }
        },
        "required": [
          "session",
          "event"
        ],
        "additionalProperties": false
      },
      "messaging__TestingPhoneState": {
        "type": "object",
        "properties": {
          "session": {
            "type": "string",
            "description": "Identifier of the connected Polymorfa session."
          },
          "phone": {
            "type": "string",
            "description": "The Test number, in E.164 format."
          },
          "online": {
            "type": "boolean",
            "description": "True while the simulated phone is running."
          },
          "devices": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "deviceId": {
                  "type": "integer",
                  "description": "Identifier for the device."
                }
              },
              "required": [
                "deviceId"
              ]
            },
            "description": "Companions linked to the phone, such as Polymorfa's own session and Inspector."
          }
        },
        "required": [
          "session",
          "phone",
          "online",
          "devices"
        ]
      },
      "messaging__TestingPhoneMessage": {
        "type": "object",
        "properties": {
          "session": {
            "type": "string",
            "description": "Identifier of the connected Polymorfa session."
          },
          "to": {
            "type": "string",
            "description": "Specifies to for this messaging testing phone message."
          },
          "messageId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Polymorfa message ID. Use the Polymorfa message's `id` for actions and replies.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "session",
          "to",
          "messageId"
        ]
      },
      "messaging__TestingPhoneMessageRequest": {
        "type": "object",
        "properties": {
          "to": {
            "type": "string",
            "pattern": "^\\+[1-9]\\d{7,14}$",
            "description": "Another Test number in the same project, in E.164 format.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\+[1-9]\\d{7,14}$` |"
          },
          "text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4096,
            "description": "Text content carried by this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `4096` characters |"
          }
        },
        "required": [
          "to",
          "text"
        ],
        "additionalProperties": false
      },
      "messaging__TestingPhoneUnlink": {
        "type": "object",
        "properties": {
          "session": {
            "type": "string",
            "description": "Identifier of the connected Polymorfa session."
          },
          "deviceId": {
            "type": "integer",
            "description": "Identifier for the device."
          },
          "unlinked": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether unlinked.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          }
        },
        "required": [
          "session",
          "deviceId",
          "unlinked"
        ]
      },
      "graph__GraphDebugTokenResponse": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphError": {
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "message": {
                "type": "string",
                "description": "Human-readable message associated with this result."
              },
              "type": {
                "type": "string",
                "description": "Type discriminator for this object."
              },
              "code": {
                "type": "number",
                "description": "Stable machine-readable code for this result."
              },
              "error_subcode": {
                "type": "number",
                "description": "Machine-readable error subcode for this error."
              },
              "error_data": {
                "anyOf": [
                  {},
                  {
                    "type": "null"
                  }
                ],
                "description": "Specifies error data for this error.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Any JSON value matching this alternative |\n| Alternative 2 | `null` |"
              },
              "fbtrace_id": {
                "type": "string",
                "description": "Identifier for the fbtrace."
              }
            },
            "required": [
              "message",
              "type",
              "code",
              "fbtrace_id"
            ],
            "description": "Error details returned when the operation fails."
          }
        },
        "required": [
          "error"
        ]
      },
      "graph__GraphCreateUploadSessionResponse": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphUploadAppendResponse": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphUploadAppendRequest": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphSendMessageResponse": {
        "type": "object",
        "properties": {
          "messaging_product": {
            "type": "string",
            "example": "whatsapp",
            "description": "Messaging product associated with this Graph API object."
          },
          "contacts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "input": {
                  "type": "string",
                  "description": "Specifies input for this contact."
                },
                "wa_id": {
                  "type": "string",
                  "description": "Recipient phone number. Omitted when the message was addressed with `recipient`."
                },
                "user_id": {
                  "type": "string",
                  "description": "Recipient business-scoped user ID. Present only when the message was addressed with `recipient`."
                }
              },
              "required": [
                "input"
              ]
            },
            "description": "Contacts returned or affected by this operation."
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Identifier for this resource."
                }
              },
              "required": [
                "id"
              ]
            },
            "description": "Messages associated with this graph graph send message response."
          }
        },
        "required": [
          "messaging_product",
          "contacts",
          "messages"
        ]
      },
      "graph__GraphSuccessResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether the request succeeded."
          }
        },
        "required": [
          "success"
        ]
      },
      "graph__GraphSendMessageRequest": {
        "type": "object",
        "properties": {
          "messaging_product": {
            "type": "string",
            "example": "whatsapp",
            "description": "Messaging product associated with this Graph API object."
          },
          "recipient_type": {
            "type": "string",
            "description": "Category assigned to recipient."
          },
          "to": {
            "type": "string",
            "description": "Recipient phone number. When both `to` and `recipient` are present, `to` is used.",
            "example": "15551234567"
          },
          "recipient": {
            "type": "string",
            "description": "Recipient business-scoped user ID, for Official API numbers only. Omit `to` to address this ID. Parent business-scoped user IDs are not accepted.",
            "example": "US.13491208655302741918"
          },
          "type": {
            "type": "string",
            "enum": [
              "text",
              "image",
              "video",
              "document",
              "audio",
              "sticker",
              "location",
              "contacts",
              "reaction",
              "interactive",
              "template"
            ],
            "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `text` | Text. |\n| `image` | Image. |\n| `video` | Video. |\n| `document` | Document. |\n| `audio` | Audio. |\n| `sticker` | Sticker. |\n| `location` | Location. |\n| `contacts` | Contacts. |\n| `reaction` | Reaction. |\n| `interactive` | Interactive. |\n| `template` | Template. |"
          },
          "text": {
            "type": "object",
            "properties": {
              "body": {
                "type": "string",
                "description": "Primary text content shown to the recipient."
              },
              "preview_url": {
                "type": "boolean",
                "description": "Whether WhatsApp renders a link preview for URLs in the text message."
              }
            },
            "description": "Text content carried by this object."
          },
          "image": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Identifier for this resource."
              },
              "link": {
                "type": "string",
                "description": "Link associated with this resource."
              },
              "caption": {
                "type": "string",
                "description": "Caption shown with the attached media."
              },
              "filename": {
                "type": "string",
                "description": "Filename presented for the media attachment."
              },
              "voice": {
                "type": "boolean",
                "description": "Whether WhatsApp treats this media payload as a push-to-talk voice message; set this only for audio attachments."
              }
            },
            "description": "Image attached to or representing this resource."
          },
          "video": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Identifier for this resource."
              },
              "link": {
                "type": "string",
                "description": "Link associated with this resource."
              },
              "caption": {
                "type": "string",
                "description": "Caption shown with the attached media."
              },
              "filename": {
                "type": "string",
                "description": "Filename presented for the media attachment."
              },
              "voice": {
                "type": "boolean",
                "description": "Whether WhatsApp treats this media payload as a push-to-talk voice message; set this only for audio attachments."
              }
            },
            "description": "Structured video values for this graph graph send message request."
          },
          "document": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Identifier for this resource."
              },
              "link": {
                "type": "string",
                "description": "Link associated with this resource."
              },
              "caption": {
                "type": "string",
                "description": "Caption shown with the attached media."
              },
              "filename": {
                "type": "string",
                "description": "Filename presented for the media attachment."
              },
              "voice": {
                "type": "boolean",
                "description": "Whether WhatsApp treats this media payload as a push-to-talk voice message; set this only for audio attachments."
              }
            },
            "description": "Structured document values for this graph graph send message request."
          },
          "audio": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Identifier for this resource."
              },
              "link": {
                "type": "string",
                "description": "Link associated with this resource."
              },
              "caption": {
                "type": "string",
                "description": "Caption shown with the attached media."
              },
              "filename": {
                "type": "string",
                "description": "Filename presented for the media attachment."
              },
              "voice": {
                "type": "boolean",
                "description": "Whether WhatsApp treats this media payload as a push-to-talk voice message; set this only for audio attachments."
              }
            },
            "description": "Structured audio values for this graph graph send message request."
          },
          "sticker": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Identifier for this resource."
              },
              "link": {
                "type": "string",
                "description": "Link associated with this resource."
              },
              "caption": {
                "type": "string",
                "description": "Caption shown with the attached media."
              },
              "filename": {
                "type": "string",
                "description": "Filename presented for the media attachment."
              },
              "voice": {
                "type": "boolean",
                "description": "Whether WhatsApp treats this media payload as a push-to-talk voice message; set this only for audio attachments."
              }
            },
            "description": "Structured sticker values for this graph graph send message request."
          },
          "location": {
            "type": "object",
            "properties": {
              "latitude": {
                "type": "number",
                "description": "Latitude in decimal degrees."
              },
              "longitude": {
                "type": "number",
                "description": "Longitude in decimal degrees."
              },
              "name": {
                "type": "string",
                "description": "Human-readable name for this resource."
              },
              "address": {
                "type": "string",
                "description": "Specifies address for this location."
              }
            },
            "description": "Structured location values for this graph graph send message request."
          },
          "contacts": {
            "type": "array",
            "items": {
              "anyOf": [
                {},
                {
                  "type": "null"
                }
              ]
            },
            "description": "Contact cards to send in this message.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Item alternative | Accepted input |\n| --- | --- |\n| Item alternative 1 | Any JSON value matching this alternative |\n| Item alternative 2 | `null` |"
          },
          "reaction": {
            "type": "object",
            "properties": {
              "message_id": {
                "type": "string",
                "description": "Identifier for the message."
              },
              "emoji": {
                "type": "string",
                "description": "Specifies emoji for this reaction."
              }
            },
            "description": "Reaction applied to the referenced message."
          },
          "interactive": {
            "anyOf": [
              {
                "description": "For Official API product and product_list sends, catalog_id must belong to a catalog linked to the Number's WABA. Product retailer IDs remain subject to Meta validation."
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies interactive for this graph graph send message request.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Any JSON value matching this alternative |\n| Alternative 2 | `null` |"
          },
          "template": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ],
            "description": "Specifies template for this graph graph send message request.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Any JSON value matching this alternative |\n| Alternative 2 | `null` |"
          },
          "context": {
            "type": "object",
            "properties": {
              "message_id": {
                "type": "string",
                "description": "Identifier for the message."
              }
            },
            "required": [
              "message_id"
            ],
            "description": "Structured context values for this graph graph send message request."
          },
          "status": {
            "type": "string",
            "example": "read",
            "description": "Message delivery status to report to WhatsApp."
          },
          "message_id": {
            "type": "string",
            "description": "Identifier for the message."
          },
          "typing_indicator": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "text"
                ],
                "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `text` | Text. |"
              }
            },
            "required": [
              "type"
            ],
            "description": "Shows a typing indicator and marks `message_id` read. Requires `status: \"read\"`."
          }
        },
        "required": [
          "messaging_product"
        ]
      },
      "graph__GraphMediaUploadResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier for this resource."
          }
        },
        "required": [
          "id"
        ]
      },
      "graph__GraphMediaUploadRequest": {
        "type": "object",
        "properties": {
          "messaging_product": {
            "type": "string",
            "example": "whatsapp",
            "description": "Messaging product associated with this Graph API object."
          },
          "type": {
            "type": "string",
            "description": "Type discriminator for this object."
          },
          "file": {
            "type": "string",
            "format": "binary",
            "description": "Specifies file for this graph graph media upload request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `binary` |"
          }
        },
        "required": [
          "messaging_product"
        ]
      },
      "graph__GraphMediaInfoResponse": {
        "type": "object",
        "properties": {
          "messaging_product": {
            "type": "string",
            "description": "Messaging product associated with this Graph API object."
          },
          "url": {
            "type": "string",
            "description": "URL associated with this resource."
          },
          "mime_type": {
            "type": "string",
            "description": "IANA media type that matches the media payload.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Media type | IANA `type/subtype` value matching the payload, such as `image/jpeg`, `video/mp4`, `audio/ogg`, or `application/pdf` |"
          },
          "sha256": {
            "type": "string",
            "description": "Specifies sha256 for this graph graph media info response."
          },
          "file_size": {
            "type": "number",
            "description": "Specifies file size for this graph graph media info response."
          },
          "id": {
            "type": "string",
            "description": "Identifier for this resource."
          }
        },
        "required": [
          "messaging_product",
          "url",
          "mime_type",
          "sha256",
          "file_size",
          "id"
        ]
      },
      "graph__GraphPhoneNumber": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier for this resource."
          },
          "display_phone_number": {
            "type": "string",
            "description": "Specifies display phone number for this graph graph phone number."
          },
          "verified_name": {
            "type": "string",
            "description": "Human-readable verified name for this graph graph phone number."
          },
          "code_verification_status": {
            "type": "string",
            "description": "Specifies code verification status for this graph graph phone number."
          },
          "quality_rating": {
            "type": "string",
            "description": "Specifies quality rating for this graph graph phone number."
          },
          "platform_type": {
            "type": "string",
            "description": "Category assigned to platform."
          },
          "throughput": {
            "type": "object",
            "properties": {
              "level": {
                "type": "string",
                "description": "Specifies level for this throughput."
              }
            },
            "required": [
              "level"
            ],
            "description": "Structured throughput values for this graph graph phone number."
          }
        },
        "required": [
          "id",
          "display_phone_number",
          "verified_name",
          "code_verification_status",
          "quality_rating",
          "platform_type",
          "throughput"
        ]
      },
      "graph__GraphPhoneNumbersResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/graph__GraphPhoneNumber"
            },
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "data"
        ]
      },
      "graph__GraphBusinessProfile": {
        "type": "object",
        "properties": {
          "messaging_product": {
            "type": "string",
            "description": "Messaging product associated with this Graph API object."
          },
          "about": {
            "type": "string",
            "description": "Specifies about for this graph graph business profile."
          },
          "address": {
            "type": "string",
            "description": "Specifies address for this graph graph business profile."
          },
          "description": {
            "type": "string",
            "description": "Human-readable description of this resource."
          },
          "email": {
            "type": "string",
            "description": "Email address associated with this resource."
          },
          "profile_picture_url": {
            "type": "string",
            "description": "URL for the profile picture."
          },
          "websites": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Websites associated with this graph graph business profile."
          },
          "vertical": {
            "type": "string",
            "description": "Specifies vertical for this graph graph business profile."
          }
        },
        "required": [
          "messaging_product"
        ]
      },
      "graph__GraphBusinessProfileResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/graph__GraphBusinessProfile"
            },
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "data"
        ]
      },
      "graph__GraphProfileUpdateResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether the request succeeded."
          }
        },
        "required": [
          "success"
        ]
      },
      "graph__GraphBusinessProfileUpdateRequest": {
        "type": "object",
        "properties": {
          "messaging_product": {
            "type": "string",
            "description": "Messaging product associated with this Graph API object."
          },
          "about": {
            "type": "string",
            "description": "Specifies about for this graph graph business profile update request."
          },
          "address": {
            "type": "string",
            "description": "Specifies address for this graph graph business profile update request."
          },
          "description": {
            "type": "string",
            "description": "Human-readable description of this resource."
          },
          "email": {
            "type": "string",
            "description": "Email address associated with this resource."
          },
          "profile_picture_handle": {
            "type": "string",
            "description": "Specifies profile picture handle for this graph graph business profile update request."
          },
          "websites": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Websites associated with this graph graph business profile update request."
          },
          "vertical": {
            "type": "string",
            "description": "Specifies vertical for this graph graph business profile update request."
          }
        }
      },
      "graph__GraphCreateMessageTemplateResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier for this resource."
          },
          "status": {
            "type": "string",
            "description": "Current status of this resource or operation."
          },
          "category": {
            "type": "string",
            "description": "Specifies category for this graph graph create message template response."
          }
        },
        "required": [
          "id",
          "status",
          "category"
        ]
      },
      "graph__GraphCreateMessageTemplateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "order_update",
            "description": "Human-readable name for this resource."
          },
          "language": {
            "type": "string",
            "example": "en_US",
            "description": "Language or locale code used for this content."
          },
          "category": {
            "type": "string",
            "enum": [
              "UTILITY",
              "MARKETING",
              "AUTHENTICATION"
            ],
            "example": "UTILITY",
            "description": "Specifies category for this graph graph create message template request.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `UTILITY` | Utility. |\n| `MARKETING` | Marketing. |\n| `AUTHENTICATION` | Authentication. |"
          },
          "allow_category_change": {
            "type": "boolean",
            "description": "Whether allow category change."
          },
          "components": {
            "type": "array",
            "items": {
              "anyOf": [
                {},
                {
                  "type": "null"
                }
              ]
            },
            "description": "Structured components that make up this message or template.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Item alternative | Accepted input |\n| --- | --- |\n| Item alternative 1 | Any JSON value matching this alternative |\n| Item alternative 2 | `null` |"
          }
        },
        "required": [
          "name",
          "language",
          "category",
          "components"
        ]
      },
      "graph__GraphMessageTemplate": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier for this resource."
          },
          "name": {
            "type": "string",
            "description": "Human-readable name for this resource."
          },
          "language": {
            "type": "string",
            "description": "Language or locale code used for this content."
          },
          "category": {
            "type": "string",
            "description": "Specifies category for this graph graph message template."
          },
          "status": {
            "type": "string",
            "description": "Current status of this resource or operation."
          },
          "components": {
            "type": "array",
            "items": {
              "anyOf": [
                {},
                {
                  "type": "null"
                }
              ]
            },
            "description": "Structured components that make up this message or template.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Item alternative | Accepted input |\n| --- | --- |\n| Item alternative 1 | Any JSON value matching this alternative |\n| Item alternative 2 | `null` |"
          },
          "quality_score": {
            "type": "object",
            "properties": {
              "score": {
                "type": "string",
                "description": "Specifies score for this quality score."
              }
            },
            "required": [
              "score"
            ],
            "description": "Structured quality score values for this graph graph message template."
          },
          "rejected_reason": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies rejected reason for this graph graph message template.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "previous_category": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies previous category for this graph graph message template.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "id",
          "name",
          "language",
          "category",
          "status",
          "components"
        ]
      },
      "graph__GraphMessageTemplatesListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/graph__GraphMessageTemplate"
            },
            "description": "Structured data carried by this object."
          },
          "paging": {
            "type": "object",
            "properties": {
              "cursors": {
                "type": "object",
                "properties": {
                  "before": {
                    "type": "string",
                    "description": "Specifies before for this cursor."
                  },
                  "after": {
                    "type": "string",
                    "description": "Specifies after for this cursor."
                  }
                },
                "description": "Structured cursors values for this paging."
              }
            },
            "required": [
              "cursors"
            ],
            "description": "Structured paging values for this graph graph message templates list response."
          }
        },
        "required": [
          "data",
          "paging"
        ]
      },
      "graph__GraphDeleteTemplateResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether the request succeeded."
          }
        },
        "required": [
          "success"
        ]
      },
      "graph__GraphCallsResponse": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphCallsRequest": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphQrListResponse": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphQrCreateResponse": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphQrCreateRequest": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphConvAutoResponse": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphConvAutoSetResponse": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphConvAutoRequest": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphBlockUsersListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "messaging_product": {
                  "type": "string",
                  "enum": [
                    "whatsapp"
                  ],
                  "description": "Messaging product associated with this Graph API object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `whatsapp` | Whatsapp. |"
                },
                "wa_id": {
                  "type": "string",
                  "description": "The person's phone number, when WhatsApp can share it."
                },
                "user_id": {
                  "type": "string",
                  "description": "The person's business-scoped user ID."
                },
                "parent_user_id": {
                  "type": "string",
                  "description": "The person's parent business-scoped user ID, when the portfolio is enrolled in parent BSUIDs."
                }
              }
            },
            "description": "Structured data carried by this object."
          },
          "paging": {
            "type": "object",
            "properties": {
              "cursors": {
                "type": "object",
                "properties": {
                  "after": {
                    "type": "string",
                    "description": "Specifies after for this cursor."
                  },
                  "before": {
                    "type": "string",
                    "description": "Specifies before for this cursor."
                  }
                },
                "description": "Structured cursors values for this paging."
              }
            },
            "description": "Structured paging values for this graph graph block users list response."
          }
        },
        "required": [
          "data"
        ]
      },
      "graph__GraphBlockedUser": {
        "type": "object",
        "properties": {
          "input": {
            "type": "string",
            "description": "The phone number or business-scoped user ID from the request."
          },
          "wa_id": {
            "type": "string",
            "description": "The person's WhatsApp ID. Omitted when the request used a business-scoped user ID."
          },
          "user_id": {
            "type": "string",
            "description": "The person's business-scoped user ID. Omitted when the request used a phone number."
          }
        }
      },
      "graph__GraphBlockUserFailure": {
        "allOf": [
          {
            "$ref": "#/components/schemas/graph__GraphBlockedUser"
          },
          {
            "type": "object",
            "properties": {
              "errors": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "Human-readable message associated with this result."
                    },
                    "code": {
                      "type": "integer",
                      "example": 131047,
                      "description": "Stable machine-readable code for this result."
                    },
                    "error_data": {
                      "type": "object",
                      "properties": {
                        "details": {
                          "type": "string",
                          "description": "Specifies details for this error data."
                        }
                      },
                      "description": "Structured error data values for this error."
                    }
                  }
                },
                "description": "Errors associated with this all of."
              }
            }
          }
        ]
      },
      "graph__GraphBlockUsersResponse": {
        "type": "object",
        "properties": {
          "messaging_product": {
            "type": "string",
            "enum": [
              "whatsapp"
            ],
            "description": "Messaging product associated with this Graph API object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `whatsapp` | Whatsapp. |"
          },
          "block_users": {
            "type": "object",
            "properties": {
              "added_users": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/graph__GraphBlockedUser"
                },
                "description": "Added users associated with this block user."
              },
              "removed_users": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/graph__GraphBlockedUser"
                },
                "description": "Removed users associated with this block user."
              },
              "failed_users": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/graph__GraphBlockUserFailure"
                },
                "description": "Failed users associated with this block user."
              }
            },
            "description": "Structured block users values for this graph graph block users response."
          }
        },
        "required": [
          "block_users"
        ]
      },
      "graph__GraphBlockUserEntry": {
        "type": "object",
        "properties": {
          "user": {
            "type": "string",
            "minLength": 1,
            "maxLength": 32,
            "description": "The person's phone number. Takes precedence over `user_id` when both are present.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `32` characters |",
            "example": "+16505551234"
          },
          "user_id": {
            "type": "string",
            "pattern": "^[A-Z]{2}\\.[A-Za-z0-9]{1,128}$",
            "description": "The person's business-scoped user ID. Parent business-scoped user IDs (`CC.ENT.…`) are not supported.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Z]{2}\\.[A-Za-z0-9]{1,128}$` |",
            "example": "US.13491208655302741918"
          }
        }
      },
      "graph__GraphBlockUsersRequest": {
        "type": "object",
        "properties": {
          "messaging_product": {
            "type": "string",
            "enum": [
              "whatsapp"
            ],
            "description": "Always `whatsapp`. Added when omitted.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `whatsapp` | Whatsapp. |"
          },
          "block_users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/graph__GraphBlockUserEntry"
            },
            "minItems": 1,
            "maxItems": 1000,
            "description": "1 to 1,000 people.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `1000` items |"
          }
        },
        "required": [
          "block_users"
        ]
      },
      "graph__GraphProductCatalogsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Identifier for this resource."
                },
                "name": {
                  "type": "string",
                  "description": "Human-readable name for this resource."
                }
              },
              "required": [
                "id"
              ]
            },
            "description": "Structured data carried by this object."
          },
          "paging": {
            "type": "object",
            "properties": {
              "cursors": {
                "type": "object",
                "properties": {
                  "before": {
                    "type": "string",
                    "description": "Specifies before for this cursor."
                  },
                  "after": {
                    "type": "string",
                    "description": "Specifies after for this cursor."
                  }
                },
                "description": "Structured cursors values for this paging."
              }
            },
            "required": [
              "cursors"
            ],
            "description": "Structured paging values for this graph graph product catalogs response."
          }
        },
        "required": [
          "data"
        ]
      },
      "graph__GraphCatalogProductsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Identifier for this resource."
                },
                "retailer_id": {
                  "type": "string",
                  "description": "Identifier for the retailer."
                },
                "name": {
                  "type": "string",
                  "description": "Human-readable name for this resource."
                },
                "availability": {
                  "type": "string",
                  "description": "Specifies availability for this data."
                }
              },
              "required": [
                "id"
              ]
            },
            "description": "Structured data carried by this object."
          },
          "paging": {
            "type": "object",
            "properties": {
              "cursors": {
                "type": "object",
                "properties": {
                  "after": {
                    "type": "string",
                    "description": "Specifies after for this cursor."
                  }
                },
                "description": "Structured cursors values for this paging."
              }
            },
            "required": [
              "cursors"
            ],
            "description": "Structured paging values for this graph graph catalog products response."
          }
        },
        "required": [
          "data"
        ]
      },
      "graph__GraphCommerceSettingsResponse": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphSetCommerceResponse": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphSetCommerceRequest": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphMarketingStatusResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "WhatsApp Business Account ID."
          },
          "marketing_messages_onboarding_status": {
            "type": "string",
            "description": "Meta's Marketing Messages onboarding status for the WABA, unchanged. Meta documents `ELIGIBLE` (the WABA can onboard) and `ONBOARDED` (onboarding is complete). Any other value is passed through as Meta sent it.",
            "example": "ONBOARDED"
          },
          "owner_business_info": {
            "type": "object",
            "properties": {
              "marketing_messages_onboarding_status": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "description": "Terms of service state of the business portfolio: `TERM_OF_SERVICE_SIGNED`, `REQUEST_SENT` or `NOT_STARTED`.",
                    "example": "TERM_OF_SERVICE_SIGNED"
                  },
                  "time": {
                    "type": "string",
                    "description": "Date Meta reports for the state.",
                    "example": "2025-08-13"
                  }
                },
                "required": [
                  "status"
                ],
                "description": "Structured marketing messages onboarding status values for this owner business info."
              }
            },
            "required": [
              "marketing_messages_onboarding_status"
            ],
            "description": "Only the portfolio's Marketing Messages terms state. Other business details are not returned."
          },
          "disable_marketing_messages_on_cloud_api": {
            "type": "boolean",
            "description": "True when the WABA refuses Marketing templates on the Cloud API `/messages` endpoint (error `131063`)."
          }
        },
        "required": [
          "id"
        ]
      },
      "graph__GraphMarketingSendResponse": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphMarketingSendRequest": {
        "type": "object",
        "properties": {
          "messaging_product": {
            "type": "string",
            "enum": [
              "whatsapp"
            ],
            "description": "Messaging product associated with this Graph API object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `whatsapp` | Whatsapp. |"
          },
          "recipient_type": {
            "type": "string",
            "enum": [
              "individual"
            ],
            "description": "Category assigned to recipient.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `individual` | Individual. |"
          },
          "to": {
            "type": "string",
            "minLength": 1,
            "description": "Specifies to for this graph graph marketing send request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          },
          "type": {
            "type": "string",
            "enum": [
              "template"
            ],
            "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `template` | Template. |"
          },
          "template": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
              },
              "language": {
                "type": "object",
                "properties": {
                  "policy": {
                    "type": "string",
                    "enum": [
                      "deterministic"
                    ],
                    "description": "Specifies policy for this language.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `deterministic` | Deterministic. |"
                  },
                  "code": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Stable machine-readable code for this result.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                  }
                },
                "required": [
                  "policy",
                  "code"
                ],
                "additionalProperties": false,
                "description": "Language or locale code used for this content."
              },
              "components": {
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "header"
                          ],
                          "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `header` | Header. |"
                        },
                        "parameters": {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "text"
                                    ],
                                    "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `text` | Text. |"
                                  },
                                  "text": {
                                    "type": "string",
                                    "maxLength": 32768,
                                    "description": "Text content carried by this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `32768` characters |"
                                  },
                                  "parameter_name": {
                                    "type": "string",
                                    "description": "Human-readable parameter name for this one of."
                                  }
                                },
                                "required": [
                                  "type",
                                  "text"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "location"
                                    ],
                                    "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `location` | Location. |"
                                  },
                                  "location": {
                                    "type": "object",
                                    "properties": {
                                      "latitude": {
                                        "type": "number",
                                        "description": "Latitude in decimal degrees."
                                      },
                                      "longitude": {
                                        "type": "number",
                                        "description": "Longitude in decimal degrees."
                                      },
                                      "name": {
                                        "type": "string",
                                        "description": "Human-readable name for this resource."
                                      },
                                      "address": {
                                        "type": "string",
                                        "description": "Specifies address for this location."
                                      }
                                    },
                                    "required": [
                                      "latitude",
                                      "longitude"
                                    ],
                                    "additionalProperties": false,
                                    "description": "Structured location values for this one of."
                                  }
                                },
                                "required": [
                                  "type",
                                  "location"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "image"
                                    ],
                                    "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `image` | Image. |"
                                  },
                                  "image": {
                                    "anyOf": [
                                      {
                                        "type": "object",
                                        "properties": {
                                          "id": {
                                            "type": "string",
                                            "minLength": 1,
                                            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                                          }
                                        },
                                        "required": [
                                          "id"
                                        ],
                                        "additionalProperties": false
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "link": {
                                            "type": "string",
                                            "format": "uri",
                                            "description": "Link associated with this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
                                          }
                                        },
                                        "required": [
                                          "link"
                                        ],
                                        "additionalProperties": false
                                      }
                                    ],
                                    "description": "Image attached to or representing this resource.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `id` |\n| Alternative 2 | Type: `object`; Required fields: `link` |"
                                  }
                                },
                                "required": [
                                  "type",
                                  "image"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "video"
                                    ],
                                    "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `video` | Video. |"
                                  },
                                  "video": {
                                    "anyOf": [
                                      {
                                        "type": "object",
                                        "properties": {
                                          "id": {
                                            "type": "string",
                                            "minLength": 1,
                                            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                                          }
                                        },
                                        "required": [
                                          "id"
                                        ],
                                        "additionalProperties": false
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "link": {
                                            "type": "string",
                                            "format": "uri",
                                            "description": "Link associated with this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
                                          }
                                        },
                                        "required": [
                                          "link"
                                        ],
                                        "additionalProperties": false
                                      }
                                    ],
                                    "description": "Specifies video for this one of.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `id` |\n| Alternative 2 | Type: `object`; Required fields: `link` |"
                                  }
                                },
                                "required": [
                                  "type",
                                  "video"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "document"
                                    ],
                                    "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `document` | Document. |"
                                  },
                                  "document": {
                                    "anyOf": [
                                      {
                                        "type": "object",
                                        "properties": {
                                          "id": {
                                            "type": "string",
                                            "minLength": 1,
                                            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                                          },
                                          "filename": {
                                            "type": "string",
                                            "description": "Filename presented for the media attachment."
                                          }
                                        },
                                        "required": [
                                          "id"
                                        ],
                                        "additionalProperties": false
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "link": {
                                            "type": "string",
                                            "format": "uri",
                                            "description": "Link associated with this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
                                          },
                                          "filename": {
                                            "type": "string",
                                            "description": "Filename presented for the media attachment."
                                          }
                                        },
                                        "required": [
                                          "link"
                                        ],
                                        "additionalProperties": false
                                      }
                                    ],
                                    "description": "Specifies document for this one of.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `id` |\n| Alternative 2 | Type: `object`; Required fields: `link` |"
                                  }
                                },
                                "required": [
                                  "type",
                                  "document"
                                ],
                                "additionalProperties": false
                              }
                            ]
                          },
                          "minItems": 1,
                          "description": "Parameters associated with this any of.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Item alternative | Accepted input |\n| --- | --- |\n| Item alternative 1 | Type: `object`; Field `type`: `text`; Required fields: `type`, `text` |\n| Item alternative 2 | Type: `object`; Field `type`: `location`; Required fields: `type`, `location` |\n| Item alternative 3 | Type: `object`; Field `type`: `image`; Required fields: `type`, `image` |\n| Item alternative 4 | Type: `object`; Field `type`: `video`; Required fields: `type`, `video` |\n| Item alternative 5 | Type: `object`; Field `type`: `document`; Required fields: `type`, `document` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At least `1` items |"
                        }
                      },
                      "required": [
                        "type",
                        "parameters"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "body"
                          ],
                          "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `body` | Body. |"
                        },
                        "parameters": {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "text"
                                    ],
                                    "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `text` | Text. |"
                                  },
                                  "text": {
                                    "type": "string",
                                    "maxLength": 32768,
                                    "description": "Text content carried by this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `32768` characters |"
                                  },
                                  "parameter_name": {
                                    "type": "string",
                                    "description": "Human-readable parameter name for this one of."
                                  }
                                },
                                "required": [
                                  "type",
                                  "text"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "currency"
                                    ],
                                    "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `currency` | Currency. |"
                                  },
                                  "currency": {
                                    "type": "object",
                                    "properties": {
                                      "fallback_value": {
                                        "type": "string",
                                        "description": "Specifies fallback value for this currency."
                                      },
                                      "code": {
                                        "type": "string",
                                        "description": "Stable machine-readable code for this result."
                                      },
                                      "amount_1000": {
                                        "type": "integer",
                                        "description": "Specifies amount 1000 for this currency."
                                      }
                                    },
                                    "required": [
                                      "fallback_value",
                                      "code",
                                      "amount_1000"
                                    ],
                                    "additionalProperties": false,
                                    "description": "ISO 4217 currency code."
                                  }
                                },
                                "required": [
                                  "type",
                                  "currency"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "date_time"
                                    ],
                                    "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `date_time` | Date time. |"
                                  },
                                  "date_time": {
                                    "type": "object",
                                    "properties": {
                                      "fallback_value": {
                                        "type": "string",
                                        "description": "Specifies fallback value for this date time."
                                      },
                                      "year": {
                                        "type": "integer",
                                        "description": "Specifies year for this date time."
                                      },
                                      "month": {
                                        "type": "integer",
                                        "description": "Specifies month for this date time."
                                      },
                                      "day_of_month": {
                                        "type": "integer",
                                        "description": "Specifies day of month for this date time."
                                      },
                                      "hour": {
                                        "type": "integer",
                                        "description": "Specifies hour for this date time."
                                      },
                                      "minute": {
                                        "type": "integer",
                                        "description": "Specifies minute for this date time."
                                      },
                                      "day_of_week": {
                                        "type": "integer",
                                        "description": "Specifies day of week for this date time."
                                      },
                                      "calendar": {
                                        "type": "string",
                                        "description": "Specifies calendar for this date time."
                                      }
                                    },
                                    "required": [
                                      "fallback_value"
                                    ],
                                    "additionalProperties": false,
                                    "description": "Structured date time values for this one of."
                                  }
                                },
                                "required": [
                                  "type",
                                  "date_time"
                                ],
                                "additionalProperties": false
                              }
                            ]
                          },
                          "description": "Parameters associated with this any of.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Item alternative | Accepted input |\n| --- | --- |\n| Item alternative 1 | Type: `object`; Field `type`: `text`; Required fields: `type`, `text` |\n| Item alternative 2 | Type: `object`; Field `type`: `currency`; Required fields: `type`, `currency` |\n| Item alternative 3 | Type: `object`; Field `type`: `date_time`; Required fields: `type`, `date_time` |"
                        }
                      },
                      "required": [
                        "type",
                        "parameters"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "button"
                          ],
                          "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `button` | Button. |"
                        },
                        "sub_type": {
                          "type": "string",
                          "enum": [
                            "quick_reply"
                          ],
                          "description": "Category assigned to sub.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `quick_reply` | Quick reply. |"
                        },
                        "index": {
                          "anyOf": [
                            {
                              "type": "string",
                              "enum": [
                                "0",
                                "1",
                                "2",
                                "3",
                                "4",
                                "5",
                                "6",
                                "7",
                                "8",
                                "9"
                              ]
                            },
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9
                            }
                          ],
                          "description": "Specifies index for this any of.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `0` or `1` or `2` or `3` or `4` or `5` or `6` or `7` or `8` or `9` |\n| Alternative 2 | Type: `integer`; Numeric value: `0` through `9` (inclusive) |"
                        },
                        "parameters": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "payload"
                                ],
                                "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `payload` | Payload. |"
                              },
                              "payload": {
                                "type": "string",
                                "description": "Structured payload carried by this event or operation."
                              }
                            },
                            "required": [
                              "type",
                              "payload"
                            ],
                            "additionalProperties": false
                          },
                          "minItems": 1,
                          "description": "Parameters associated with this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At least `1` items |"
                        }
                      },
                      "required": [
                        "type",
                        "sub_type",
                        "index",
                        "parameters"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "button"
                          ],
                          "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `button` | Button. |"
                        },
                        "sub_type": {
                          "type": "string",
                          "enum": [
                            "url"
                          ],
                          "description": "Category assigned to sub.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `url` | Url. |"
                        },
                        "index": {
                          "anyOf": [
                            {
                              "type": "string",
                              "enum": [
                                "0",
                                "1",
                                "2",
                                "3",
                                "4",
                                "5",
                                "6",
                                "7",
                                "8",
                                "9"
                              ]
                            },
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9
                            }
                          ],
                          "description": "Specifies index for this any of.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `0` or `1` or `2` or `3` or `4` or `5` or `6` or `7` or `8` or `9` |\n| Alternative 2 | Type: `integer`; Numeric value: `0` through `9` (inclusive) |"
                        },
                        "parameters": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "text"
                                ],
                                "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `text` | Text. |"
                              },
                              "text": {
                                "type": "string",
                                "description": "Text content carried by this object."
                              }
                            },
                            "required": [
                              "type",
                              "text"
                            ],
                            "additionalProperties": false
                          },
                          "minItems": 1,
                          "description": "Parameters associated with this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At least `1` items |"
                        }
                      },
                      "required": [
                        "type",
                        "sub_type",
                        "index",
                        "parameters"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "button"
                          ],
                          "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `button` | Button. |"
                        },
                        "sub_type": {
                          "type": "string",
                          "enum": [
                            "catalog",
                            "CATALOG"
                          ],
                          "description": "Category assigned to sub.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `catalog` | Catalog. |\n| `CATALOG` | Catalog. |"
                        },
                        "index": {
                          "anyOf": [
                            {
                              "type": "string",
                              "enum": [
                                "0",
                                "1",
                                "2",
                                "3",
                                "4",
                                "5",
                                "6",
                                "7",
                                "8",
                                "9"
                              ]
                            },
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9
                            }
                          ],
                          "description": "Specifies index for this any of.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `0` or `1` or `2` or `3` or `4` or `5` or `6` or `7` or `8` or `9` |\n| Alternative 2 | Type: `integer`; Numeric value: `0` through `9` (inclusive) |"
                        },
                        "parameters": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "action"
                                ],
                                "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `action` | Action. |"
                              },
                              "action": {
                                "type": "object",
                                "properties": {
                                  "thumbnail_product_retailer_id": {
                                    "type": "string",
                                    "minLength": 1,
                                    "description": "Identifier for the thumbnail product retailer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                                  }
                                },
                                "required": [
                                  "thumbnail_product_retailer_id"
                                ],
                                "additionalProperties": false,
                                "description": "Action represented by this parameter."
                              }
                            },
                            "required": [
                              "type",
                              "action"
                            ],
                            "additionalProperties": false
                          },
                          "minItems": 1,
                          "description": "Parameters associated with this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At least `1` items |"
                        }
                      },
                      "required": [
                        "type",
                        "sub_type",
                        "index",
                        "parameters"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "button"
                          ],
                          "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `button` | Button. |"
                        },
                        "sub_type": {
                          "type": "string",
                          "enum": [
                            "copy_code"
                          ],
                          "description": "Category assigned to sub.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `copy_code` | Copy code. |"
                        },
                        "index": {
                          "anyOf": [
                            {
                              "type": "string",
                              "enum": [
                                "0",
                                "1",
                                "2",
                                "3",
                                "4",
                                "5",
                                "6",
                                "7",
                                "8",
                                "9"
                              ]
                            },
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9
                            }
                          ],
                          "description": "Specifies index for this any of.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `0` or `1` or `2` or `3` or `4` or `5` or `6` or `7` or `8` or `9` |\n| Alternative 2 | Type: `integer`; Numeric value: `0` through `9` (inclusive) |"
                        },
                        "parameters": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "coupon_code"
                                ],
                                "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `coupon_code` | Coupon code. |"
                              },
                              "coupon_code": {
                                "type": "string",
                                "description": "Machine-readable coupon code for this parameter."
                              }
                            },
                            "required": [
                              "type",
                              "coupon_code"
                            ],
                            "additionalProperties": false
                          },
                          "minItems": 1,
                          "description": "Parameters associated with this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At least `1` items |"
                        }
                      },
                      "required": [
                        "type",
                        "sub_type",
                        "index",
                        "parameters"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "limited_time_offer"
                          ],
                          "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `limited_time_offer` | Limited time offer. |"
                        },
                        "parameters": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "limited_time_offer"
                                ],
                                "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `limited_time_offer` | Limited time offer. |"
                              },
                              "limited_time_offer": {
                                "type": "object",
                                "properties": {
                                  "expiration_time_ms": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Offer expiration as a Unix timestamp in milliseconds.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  }
                                },
                                "required": [
                                  "expiration_time_ms"
                                ],
                                "additionalProperties": false,
                                "description": "Limited-time offer values for this parameter."
                              }
                            },
                            "required": [
                              "type",
                              "limited_time_offer"
                            ],
                            "additionalProperties": false
                          },
                          "minItems": 1,
                          "maxItems": 1,
                          "description": "Parameters associated with this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `1` items |"
                        }
                      },
                      "required": [
                        "type",
                        "parameters"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "carousel"
                          ],
                          "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `carousel` | Carousel. |"
                        },
                        "cards": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "card_index": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9,
                                "description": "Specifies card index for this card.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `9` (inclusive) |"
                              },
                              "components": {
                                "type": "array",
                                "items": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "properties": {
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "header"
                                          ],
                                          "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `header` | Header. |"
                                        },
                                        "parameters": {
                                          "type": "array",
                                          "items": {
                                            "oneOf": [
                                              {
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": [
                                                      "text"
                                                    ],
                                                    "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `text` | Text. |"
                                                  },
                                                  "text": {
                                                    "type": "string",
                                                    "maxLength": 32768,
                                                    "description": "Text content carried by this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `32768` characters |"
                                                  },
                                                  "parameter_name": {
                                                    "type": "string",
                                                    "description": "Human-readable parameter name for this one of."
                                                  }
                                                },
                                                "required": [
                                                  "type",
                                                  "text"
                                                ],
                                                "additionalProperties": false
                                              },
                                              {
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": [
                                                      "location"
                                                    ],
                                                    "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `location` | Location. |"
                                                  },
                                                  "location": {
                                                    "type": "object",
                                                    "properties": {
                                                      "latitude": {
                                                        "type": "number",
                                                        "description": "Latitude in decimal degrees."
                                                      },
                                                      "longitude": {
                                                        "type": "number",
                                                        "description": "Longitude in decimal degrees."
                                                      },
                                                      "name": {
                                                        "type": "string",
                                                        "description": "Human-readable name for this resource."
                                                      },
                                                      "address": {
                                                        "type": "string",
                                                        "description": "Specifies address for this location."
                                                      }
                                                    },
                                                    "required": [
                                                      "latitude",
                                                      "longitude"
                                                    ],
                                                    "additionalProperties": false,
                                                    "description": "Structured location values for this one of."
                                                  }
                                                },
                                                "required": [
                                                  "type",
                                                  "location"
                                                ],
                                                "additionalProperties": false
                                              },
                                              {
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": [
                                                      "image"
                                                    ],
                                                    "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `image` | Image. |"
                                                  },
                                                  "image": {
                                                    "anyOf": [
                                                      {
                                                        "type": "object",
                                                        "properties": {
                                                          "id": {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                                                          }
                                                        },
                                                        "required": [
                                                          "id"
                                                        ],
                                                        "additionalProperties": false
                                                      },
                                                      {
                                                        "type": "object",
                                                        "properties": {
                                                          "link": {
                                                            "type": "string",
                                                            "format": "uri",
                                                            "description": "Link associated with this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
                                                          }
                                                        },
                                                        "required": [
                                                          "link"
                                                        ],
                                                        "additionalProperties": false
                                                      }
                                                    ],
                                                    "description": "Image attached to or representing this resource.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `id` |\n| Alternative 2 | Type: `object`; Required fields: `link` |"
                                                  }
                                                },
                                                "required": [
                                                  "type",
                                                  "image"
                                                ],
                                                "additionalProperties": false
                                              },
                                              {
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": [
                                                      "video"
                                                    ],
                                                    "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `video` | Video. |"
                                                  },
                                                  "video": {
                                                    "anyOf": [
                                                      {
                                                        "type": "object",
                                                        "properties": {
                                                          "id": {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                                                          }
                                                        },
                                                        "required": [
                                                          "id"
                                                        ],
                                                        "additionalProperties": false
                                                      },
                                                      {
                                                        "type": "object",
                                                        "properties": {
                                                          "link": {
                                                            "type": "string",
                                                            "format": "uri",
                                                            "description": "Link associated with this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
                                                          }
                                                        },
                                                        "required": [
                                                          "link"
                                                        ],
                                                        "additionalProperties": false
                                                      }
                                                    ],
                                                    "description": "Specifies video for this one of.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `id` |\n| Alternative 2 | Type: `object`; Required fields: `link` |"
                                                  }
                                                },
                                                "required": [
                                                  "type",
                                                  "video"
                                                ],
                                                "additionalProperties": false
                                              },
                                              {
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": [
                                                      "document"
                                                    ],
                                                    "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `document` | Document. |"
                                                  },
                                                  "document": {
                                                    "anyOf": [
                                                      {
                                                        "type": "object",
                                                        "properties": {
                                                          "id": {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                                                          },
                                                          "filename": {
                                                            "type": "string",
                                                            "description": "Filename presented for the media attachment."
                                                          }
                                                        },
                                                        "required": [
                                                          "id"
                                                        ],
                                                        "additionalProperties": false
                                                      },
                                                      {
                                                        "type": "object",
                                                        "properties": {
                                                          "link": {
                                                            "type": "string",
                                                            "format": "uri",
                                                            "description": "Link associated with this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
                                                          },
                                                          "filename": {
                                                            "type": "string",
                                                            "description": "Filename presented for the media attachment."
                                                          }
                                                        },
                                                        "required": [
                                                          "link"
                                                        ],
                                                        "additionalProperties": false
                                                      }
                                                    ],
                                                    "description": "Specifies document for this one of.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `id` |\n| Alternative 2 | Type: `object`; Required fields: `link` |"
                                                  }
                                                },
                                                "required": [
                                                  "type",
                                                  "document"
                                                ],
                                                "additionalProperties": false
                                              }
                                            ]
                                          },
                                          "minItems": 1,
                                          "description": "Parameters associated with this any of.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Item alternative | Accepted input |\n| --- | --- |\n| Item alternative 1 | Type: `object`; Field `type`: `text`; Required fields: `type`, `text` |\n| Item alternative 2 | Type: `object`; Field `type`: `location`; Required fields: `type`, `location` |\n| Item alternative 3 | Type: `object`; Field `type`: `image`; Required fields: `type`, `image` |\n| Item alternative 4 | Type: `object`; Field `type`: `video`; Required fields: `type`, `video` |\n| Item alternative 5 | Type: `object`; Field `type`: `document`; Required fields: `type`, `document` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At least `1` items |"
                                        }
                                      },
                                      "required": [
                                        "type",
                                        "parameters"
                                      ],
                                      "additionalProperties": false
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "body"
                                          ],
                                          "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `body` | Body. |"
                                        },
                                        "parameters": {
                                          "type": "array",
                                          "items": {
                                            "oneOf": [
                                              {
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": [
                                                      "text"
                                                    ],
                                                    "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `text` | Text. |"
                                                  },
                                                  "text": {
                                                    "type": "string",
                                                    "maxLength": 32768,
                                                    "description": "Text content carried by this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `32768` characters |"
                                                  },
                                                  "parameter_name": {
                                                    "type": "string",
                                                    "description": "Human-readable parameter name for this one of."
                                                  }
                                                },
                                                "required": [
                                                  "type",
                                                  "text"
                                                ],
                                                "additionalProperties": false
                                              },
                                              {
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": [
                                                      "currency"
                                                    ],
                                                    "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `currency` | Currency. |"
                                                  },
                                                  "currency": {
                                                    "type": "object",
                                                    "properties": {
                                                      "fallback_value": {
                                                        "type": "string",
                                                        "description": "Specifies fallback value for this currency."
                                                      },
                                                      "code": {
                                                        "type": "string",
                                                        "description": "Stable machine-readable code for this result."
                                                      },
                                                      "amount_1000": {
                                                        "type": "integer",
                                                        "description": "Specifies amount 1000 for this currency."
                                                      }
                                                    },
                                                    "required": [
                                                      "fallback_value",
                                                      "code",
                                                      "amount_1000"
                                                    ],
                                                    "additionalProperties": false,
                                                    "description": "ISO 4217 currency code."
                                                  }
                                                },
                                                "required": [
                                                  "type",
                                                  "currency"
                                                ],
                                                "additionalProperties": false
                                              },
                                              {
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": [
                                                      "date_time"
                                                    ],
                                                    "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `date_time` | Date time. |"
                                                  },
                                                  "date_time": {
                                                    "type": "object",
                                                    "properties": {
                                                      "fallback_value": {
                                                        "type": "string",
                                                        "description": "Specifies fallback value for this date time."
                                                      },
                                                      "year": {
                                                        "type": "integer",
                                                        "description": "Specifies year for this date time."
                                                      },
                                                      "month": {
                                                        "type": "integer",
                                                        "description": "Specifies month for this date time."
                                                      },
                                                      "day_of_month": {
                                                        "type": "integer",
                                                        "description": "Specifies day of month for this date time."
                                                      },
                                                      "hour": {
                                                        "type": "integer",
                                                        "description": "Specifies hour for this date time."
                                                      },
                                                      "minute": {
                                                        "type": "integer",
                                                        "description": "Specifies minute for this date time."
                                                      },
                                                      "day_of_week": {
                                                        "type": "integer",
                                                        "description": "Specifies day of week for this date time."
                                                      },
                                                      "calendar": {
                                                        "type": "string",
                                                        "description": "Specifies calendar for this date time."
                                                      }
                                                    },
                                                    "required": [
                                                      "fallback_value"
                                                    ],
                                                    "additionalProperties": false,
                                                    "description": "Structured date time values for this one of."
                                                  }
                                                },
                                                "required": [
                                                  "type",
                                                  "date_time"
                                                ],
                                                "additionalProperties": false
                                              }
                                            ]
                                          },
                                          "description": "Parameters associated with this any of.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Item alternative | Accepted input |\n| --- | --- |\n| Item alternative 1 | Type: `object`; Field `type`: `text`; Required fields: `type`, `text` |\n| Item alternative 2 | Type: `object`; Field `type`: `currency`; Required fields: `type`, `currency` |\n| Item alternative 3 | Type: `object`; Field `type`: `date_time`; Required fields: `type`, `date_time` |"
                                        }
                                      },
                                      "required": [
                                        "type",
                                        "parameters"
                                      ],
                                      "additionalProperties": false
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "button"
                                          ],
                                          "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `button` | Button. |"
                                        },
                                        "sub_type": {
                                          "type": "string",
                                          "enum": [
                                            "quick_reply"
                                          ],
                                          "description": "Category assigned to sub.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `quick_reply` | Quick reply. |"
                                        },
                                        "index": {
                                          "anyOf": [
                                            {
                                              "type": "string",
                                              "enum": [
                                                "0",
                                                "1",
                                                "2",
                                                "3",
                                                "4",
                                                "5",
                                                "6",
                                                "7",
                                                "8",
                                                "9"
                                              ]
                                            },
                                            {
                                              "type": "integer",
                                              "minimum": 0,
                                              "maximum": 9
                                            }
                                          ],
                                          "description": "Specifies index for this any of.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `0` or `1` or `2` or `3` or `4` or `5` or `6` or `7` or `8` or `9` |\n| Alternative 2 | Type: `integer`; Numeric value: `0` through `9` (inclusive) |"
                                        },
                                        "parameters": {
                                          "type": "array",
                                          "items": {
                                            "type": "object",
                                            "properties": {
                                              "type": {
                                                "type": "string",
                                                "enum": [
                                                  "payload"
                                                ],
                                                "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `payload` | Payload. |"
                                              },
                                              "payload": {
                                                "type": "string",
                                                "description": "Structured payload carried by this event or operation."
                                              }
                                            },
                                            "required": [
                                              "type",
                                              "payload"
                                            ],
                                            "additionalProperties": false
                                          },
                                          "minItems": 1,
                                          "description": "Parameters associated with this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At least `1` items |"
                                        }
                                      },
                                      "required": [
                                        "type",
                                        "sub_type",
                                        "index",
                                        "parameters"
                                      ],
                                      "additionalProperties": false
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "button"
                                          ],
                                          "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `button` | Button. |"
                                        },
                                        "sub_type": {
                                          "type": "string",
                                          "enum": [
                                            "url"
                                          ],
                                          "description": "Category assigned to sub.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `url` | Url. |"
                                        },
                                        "index": {
                                          "anyOf": [
                                            {
                                              "type": "string",
                                              "enum": [
                                                "0",
                                                "1",
                                                "2",
                                                "3",
                                                "4",
                                                "5",
                                                "6",
                                                "7",
                                                "8",
                                                "9"
                                              ]
                                            },
                                            {
                                              "type": "integer",
                                              "minimum": 0,
                                              "maximum": 9
                                            }
                                          ],
                                          "description": "Specifies index for this any of.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `0` or `1` or `2` or `3` or `4` or `5` or `6` or `7` or `8` or `9` |\n| Alternative 2 | Type: `integer`; Numeric value: `0` through `9` (inclusive) |"
                                        },
                                        "parameters": {
                                          "type": "array",
                                          "items": {
                                            "type": "object",
                                            "properties": {
                                              "type": {
                                                "type": "string",
                                                "enum": [
                                                  "text"
                                                ],
                                                "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `text` | Text. |"
                                              },
                                              "text": {
                                                "type": "string",
                                                "description": "Text content carried by this object."
                                              }
                                            },
                                            "required": [
                                              "type",
                                              "text"
                                            ],
                                            "additionalProperties": false
                                          },
                                          "minItems": 1,
                                          "description": "Parameters associated with this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At least `1` items |"
                                        }
                                      },
                                      "required": [
                                        "type",
                                        "sub_type",
                                        "index",
                                        "parameters"
                                      ],
                                      "additionalProperties": false
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "button"
                                          ],
                                          "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `button` | Button. |"
                                        },
                                        "sub_type": {
                                          "type": "string",
                                          "enum": [
                                            "catalog",
                                            "CATALOG"
                                          ],
                                          "description": "Category assigned to sub.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `catalog` | Catalog. |\n| `CATALOG` | Catalog. |"
                                        },
                                        "index": {
                                          "anyOf": [
                                            {
                                              "type": "string",
                                              "enum": [
                                                "0",
                                                "1",
                                                "2",
                                                "3",
                                                "4",
                                                "5",
                                                "6",
                                                "7",
                                                "8",
                                                "9"
                                              ]
                                            },
                                            {
                                              "type": "integer",
                                              "minimum": 0,
                                              "maximum": 9
                                            }
                                          ],
                                          "description": "Specifies index for this any of.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `0` or `1` or `2` or `3` or `4` or `5` or `6` or `7` or `8` or `9` |\n| Alternative 2 | Type: `integer`; Numeric value: `0` through `9` (inclusive) |"
                                        },
                                        "parameters": {
                                          "type": "array",
                                          "items": {
                                            "type": "object",
                                            "properties": {
                                              "type": {
                                                "type": "string",
                                                "enum": [
                                                  "action"
                                                ],
                                                "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `action` | Action. |"
                                              },
                                              "action": {
                                                "type": "object",
                                                "properties": {
                                                  "thumbnail_product_retailer_id": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "description": "Identifier for the thumbnail product retailer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
                                                  }
                                                },
                                                "required": [
                                                  "thumbnail_product_retailer_id"
                                                ],
                                                "additionalProperties": false,
                                                "description": "Action represented by this parameter."
                                              }
                                            },
                                            "required": [
                                              "type",
                                              "action"
                                            ],
                                            "additionalProperties": false
                                          },
                                          "minItems": 1,
                                          "description": "Parameters associated with this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At least `1` items |"
                                        }
                                      },
                                      "required": [
                                        "type",
                                        "sub_type",
                                        "index",
                                        "parameters"
                                      ],
                                      "additionalProperties": false
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "button"
                                          ],
                                          "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `button` | Button. |"
                                        },
                                        "sub_type": {
                                          "type": "string",
                                          "enum": [
                                            "copy_code"
                                          ],
                                          "description": "Category assigned to sub.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `copy_code` | Copy code. |"
                                        },
                                        "index": {
                                          "anyOf": [
                                            {
                                              "type": "string",
                                              "enum": [
                                                "0",
                                                "1",
                                                "2",
                                                "3",
                                                "4",
                                                "5",
                                                "6",
                                                "7",
                                                "8",
                                                "9"
                                              ]
                                            },
                                            {
                                              "type": "integer",
                                              "minimum": 0,
                                              "maximum": 9
                                            }
                                          ],
                                          "description": "Specifies index for this any of.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `0` or `1` or `2` or `3` or `4` or `5` or `6` or `7` or `8` or `9` |\n| Alternative 2 | Type: `integer`; Numeric value: `0` through `9` (inclusive) |"
                                        },
                                        "parameters": {
                                          "type": "array",
                                          "items": {
                                            "type": "object",
                                            "properties": {
                                              "type": {
                                                "type": "string",
                                                "enum": [
                                                  "coupon_code"
                                                ],
                                                "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `coupon_code` | Coupon code. |"
                                              },
                                              "coupon_code": {
                                                "type": "string",
                                                "description": "Machine-readable coupon code for this parameter."
                                              }
                                            },
                                            "required": [
                                              "type",
                                              "coupon_code"
                                            ],
                                            "additionalProperties": false
                                          },
                                          "minItems": 1,
                                          "description": "Parameters associated with this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At least `1` items |"
                                        }
                                      },
                                      "required": [
                                        "type",
                                        "sub_type",
                                        "index",
                                        "parameters"
                                      ],
                                      "additionalProperties": false
                                    }
                                  ]
                                },
                                "description": "Structured components that make up this message or template.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Item alternative | Accepted input |\n| --- | --- |\n| Item alternative 1 | Type: `object`; Field `type`: `header`; Required fields: `type`, `parameters` |\n| Item alternative 2 | Type: `object`; Field `type`: `body`; Required fields: `type`, `parameters` |\n| Item alternative 3 | Type: `object`; Field `type`: `button`; Field `sub_type`: `quick_reply`; Required fields: `type`, `sub_type`, `index`, `parameters` |\n| Item alternative 4 | Type: `object`; Field `type`: `button`; Field `sub_type`: `url`; Required fields: `type`, `sub_type`, `index`, `parameters` |\n| Item alternative 5 | Type: `object`; Field `type`: `button`; Field `sub_type`: `catalog` or `CATALOG`; Required fields: `type`, `sub_type`, `index`, `parameters` |\n| Item alternative 6 | Type: `object`; Field `type`: `button`; Field `sub_type`: `copy_code`; Required fields: `type`, `sub_type`, `index`, `parameters` |"
                              }
                            },
                            "required": [
                              "card_index",
                              "components"
                            ],
                            "additionalProperties": false
                          },
                          "minItems": 1,
                          "maxItems": 10,
                          "description": "Cards associated with this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `10` items |"
                        }
                      },
                      "required": [
                        "type",
                        "cards"
                      ],
                      "additionalProperties": false
                    }
                  ]
                },
                "description": "Structured components that make up this message or template.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Item alternative | Accepted input |\n| --- | --- |\n| Item alternative 1 | Type: `object`; Field `type`: `header`; Required fields: `type`, `parameters` |\n| Item alternative 2 | Type: `object`; Field `type`: `body`; Required fields: `type`, `parameters` |\n| Item alternative 3 | Type: `object`; Field `type`: `button`; Field `sub_type`: `quick_reply`; Required fields: `type`, `sub_type`, `index`, `parameters` |\n| Item alternative 4 | Type: `object`; Field `type`: `button`; Field `sub_type`: `url`; Required fields: `type`, `sub_type`, `index`, `parameters` |\n| Item alternative 5 | Type: `object`; Field `type`: `button`; Field `sub_type`: `catalog` or `CATALOG`; Required fields: `type`, `sub_type`, `index`, `parameters` |\n| Item alternative 6 | Type: `object`; Field `type`: `button`; Field `sub_type`: `copy_code`; Required fields: `type`, `sub_type`, `index`, `parameters` |\n| Item alternative 7 | Type: `object`; Field `type`: `limited_time_offer`; Required fields: `type`, `parameters` |\n| Item alternative 8 | Type: `object`; Field `type`: `carousel`; Required fields: `type`, `cards` |"
              }
            },
            "required": [
              "name",
              "language"
            ],
            "additionalProperties": false,
            "description": "Structured template values for this graph graph marketing send request."
          },
          "product_policy": {
            "type": "string",
            "enum": [
              "STRICT"
            ],
            "description": "Specifies product policy for this graph graph marketing send request.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `STRICT` | Strict. |"
          },
          "message_activity_sharing": {
            "type": "boolean",
            "description": "Whether message activity sharing."
          }
        },
        "required": [
          "messaging_product",
          "recipient_type",
          "to",
          "type",
          "template",
          "product_policy"
        ],
        "additionalProperties": false
      },
      "graph__GraphRegisterResponse": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphRegisterRequest": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphDeregisterResponse": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphRequestCodeResponse": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphRequestCodeRequest": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphVerifyCodeResponse": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphVerifyCodeRequest": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphSubscribedAppsResponse": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphSubscribeAppResponse": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphUnsubscribeAppResponse": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphFlowsResponse": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphCreateFlowResponse": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "graph__GraphCreateFlowRequest": {
        "anyOf": [
          {},
          {
            "type": "null"
          }
        ]
      },
      "platform__BillingPriorities": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "revision": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2147483646,
            "description": "Specifies revision for this platform billing priority.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `2147483646` (inclusive) |"
          },
          "projects": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                },
                "name": {
                  "type": "string",
                  "description": "Human-readable name for this resource."
                },
                "priority": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1000000,
                  "description": "Specifies priority for this project.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1000000` (inclusive) |"
                }
              },
              "required": [
                "id",
                "name",
                "priority"
              ]
            },
            "description": "Projects associated with this platform billing priority."
          },
          "customers": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                },
                "projectId": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                },
                "name": {
                  "type": "string",
                  "description": "Human-readable name for this resource."
                },
                "priority": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1000000,
                  "description": "Specifies priority for this customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1000000` (inclusive) |"
                }
              },
              "required": [
                "id",
                "projectId",
                "name",
                "priority"
              ]
            },
            "description": "Customers associated with this platform billing priority."
          },
          "numbers": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                },
                "projectId": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                },
                "name": {
                  "type": "string",
                  "description": "Human-readable name for this resource."
                },
                "priority": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1000000,
                  "description": "Specifies priority for this number.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1000000` (inclusive) |"
                }
              },
              "required": [
                "id",
                "projectId",
                "name",
                "priority"
              ]
            },
            "description": "Numbers associated with this platform billing priority."
          }
        },
        "required": [
          "revision",
          "projects",
          "customers",
          "numbers"
        ]
      },
      "platform__BillingLimit": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "scope": {
            "type": "string",
            "enum": [
              "project",
              "customer",
              "number"
            ],
            "description": "Specifies scope for this platform billing limit.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `project` | Project. |\n| `customer` | Customer. |\n| `number` | Number. |"
          },
          "resourceId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the resource affected by this event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "name": {
            "type": "string",
            "description": "Human-readable name for this resource."
          },
          "limitCredits": {
            "type": [
              "number",
              "null"
            ],
            "minimum": 0,
            "multipleOf": 0.000001,
            "maximum": 1000000,
            "description": "Specifies limit credits for this platform billing limit.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1000000` (inclusive); Increment: Multiple of `0.000001` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1000000` (inclusive) |\n| Increment | Multiple of `0.000001` |"
          },
          "spentCredits": {
            "type": "number",
            "minimum": 0,
            "multipleOf": 0.000001,
            "description": "Specifies spent credits for this platform billing limit.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |\n| Increment | Multiple of `0.000001` |"
          },
          "reservedCredits": {
            "type": "number",
            "minimum": 0,
            "multipleOf": 0.000001,
            "description": "Specifies reserved credits for this platform billing limit.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |\n| Increment | Multiple of `0.000001` |"
          },
          "revision": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2147483646,
            "description": "Specifies revision for this platform billing limit.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `2147483646` (inclusive) |"
          }
        },
        "required": [
          "scope",
          "resourceId",
          "projectId",
          "name",
          "limitCredits",
          "spentCredits",
          "reservedCredits",
          "revision"
        ]
      },
      "platform__ResourceBillingControls": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "budget": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__BillingLimit"
              }
            ],
            "description": "Specifies budget for this platform resource billing control."
          },
          "priority": {
            "type": "integer",
            "minimum": 0,
            "maximum": 1000000,
            "description": "Specifies priority for this platform resource billing control.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1000000` (inclusive) |"
          },
          "priorityRevision": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2147483646,
            "description": "Specifies priority revision for this platform resource billing control.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `2147483646` (inclusive) |"
          }
        },
        "required": [
          "budget",
          "priority",
          "priorityRevision"
        ]
      },
      "platform__BillingLimits": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "checkedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for checked at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "periodStart": {
            "type": "string",
            "format": "date-time",
            "description": "Specifies period start for this platform billing limit.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "periodEnd": {
            "type": "string",
            "format": "date-time",
            "description": "Specifies period end for this platform billing limit.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "todayCredits": {
            "type": "number",
            "minimum": 0,
            "multipleOf": 0.000001,
            "description": "Specifies today credits for this platform billing limit.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |\n| Increment | Multiple of `0.000001` |"
          },
          "monthCredits": {
            "type": "number",
            "minimum": 0,
            "multipleOf": 0.000001,
            "description": "Specifies month credits for this platform billing limit.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |\n| Increment | Multiple of `0.000001` |"
          },
          "daily": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "date": {
                  "type": "string",
                  "format": "date",
                  "description": "Specifies date for this daily.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date` |"
                },
                "credits": {
                  "type": "number",
                  "minimum": 0,
                  "multipleOf": 0.000001,
                  "description": "Specifies credits for this daily.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |\n| Increment | Multiple of `0.000001` |"
                }
              },
              "required": [
                "date",
                "credits"
              ]
            },
            "description": "Daily associated with this platform billing limit."
          },
          "budgets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/platform__BillingLimit"
            },
            "description": "Budgets associated with this platform billing limit."
          }
        },
        "required": [
          "checkedAt",
          "periodStart",
          "periodEnd",
          "todayCredits",
          "monthCredits",
          "daily",
          "budgets"
        ]
      },
      "platform__WhatsAppAnalytics": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          },
          "period": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "start": {
                "type": "integer",
                "description": "Unix milliseconds."
              },
              "end": {
                "type": "integer",
                "description": "Unix milliseconds."
              }
            },
            "required": [
              "start",
              "end"
            ],
            "description": "Structured period values for this platform whats app analytic."
          },
          "requestVitals": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "requests": {
                "type": "integer",
                "minimum": 0,
                "description": "Specifies requests for this request vital.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              },
              "failures": {
                "type": "integer",
                "minimum": 0,
                "description": "Specifies failures for this request vital.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              },
              "errorRate": {
                "type": [
                  "number",
                  "null"
                ],
                "minimum": 0,
                "maximum": 1,
                "description": "Specifies error rate for this request vital.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
              }
            },
            "required": [
              "requests",
              "failures",
              "errorRate"
            ],
            "description": "Structured request vitals values for this platform whats app analytic."
          },
          "summary": {
            "anyOf": [
              {
                "type": "object",
                "allOf": [
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "measured": {
                        "type": "boolean",
                        "description": "Whether measured."
                      },
                      "observedHours": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "Specifies observed hours for this all of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                      },
                      "lastObservedAt": {
                        "type": [
                          "integer",
                          "null"
                        ],
                        "description": "Unix milliseconds.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
                      },
                      "outgoingMessages": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "Specifies outgoing messages for this all of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                      },
                      "incomingMessages": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "Specifies incoming messages for this all of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                      },
                      "sendAttempts": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "Specifies send attempts for this all of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                      },
                      "sendFailures": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "Specifies send failures for this all of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                      },
                      "sendFailureRate": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "minimum": 0,
                        "maximum": 1,
                        "description": "Specifies send failure rate for this all of.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                      },
                      "businessReplies": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "Specifies business replies for this all of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                      },
                      "averageBusinessResponseMs": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "minimum": 0,
                        "description": "Specifies average business response ms for this all of.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                      },
                      "onlineMs": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "Specifies online ms for this all of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                      },
                      "disconnects": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "Specifies disconnects for this all of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                      },
                      "connectFailures": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "Specifies connect failures for this all of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                      },
                      "streamErrors": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "Specifies stream errors for this all of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                      },
                      "keepaliveTimeouts": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "Specifies keepalive timeouts for this all of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                      },
                      "engagement": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "windowHours": {
                            "type": "integer",
                            "enum": [
                              24
                            ],
                            "description": "Specifies window hours for this engagement.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `24` | 24. |"
                          },
                          "completedConversations": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies completed conversations for this engagement.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "deliveredConversations": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies delivered conversations for this engagement.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "readConversations": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies read conversations for this engagement.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "repliedConversations": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies replied conversations for this engagement.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "deliveryRate": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "maximum": 1,
                            "description": "Specifies delivery rate for this engagement.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                          },
                          "readRate": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "maximum": 1,
                            "description": "Specifies read rate for this engagement.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                          },
                          "replyRate": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "maximum": 1,
                            "description": "Specifies reply rate for this engagement.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                          },
                          "averageCustomerReplyMs": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "description": "Specifies average customer reply ms for this engagement.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "complete": {
                            "type": "boolean",
                            "description": "Whether complete."
                          },
                          "droppedConversations": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies dropped conversations for this engagement.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "droppedRecords": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies dropped records for this engagement.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "droppedReceiptJoins": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies dropped receipt joins for this engagement.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          }
                        },
                        "required": [
                          "windowHours",
                          "completedConversations",
                          "deliveredConversations",
                          "readConversations",
                          "repliedConversations",
                          "deliveryRate",
                          "readRate",
                          "replyRate",
                          "averageCustomerReplyMs",
                          "complete",
                          "droppedConversations",
                          "droppedRecords",
                          "droppedReceiptJoins"
                        ],
                        "description": "Structured engagement values for this all of."
                      },
                      "totalNumbers": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "Specifies total numbers for this all of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                      },
                      "measuredNumbers": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "Specifies measured numbers for this all of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                      },
                      "connectedNumbers": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "Specifies connected numbers for this all of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                      },
                      "messageAnalysis": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "complete": {
                            "type": "boolean",
                            "description": "Whether complete."
                          },
                          "segments": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "properties": {
                                "dimension": {
                                  "type": "string",
                                  "enum": [
                                    "message_type",
                                    "text_band",
                                    "origin",
                                    "calling_code",
                                    "customer_devices"
                                  ],
                                  "description": "Specifies dimension for this segment.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `message_type` | Message type. |\n| `text_band` | Text band. |\n| `origin` | Origin. |\n| `calling_code` | Calling code. |\n| `customer_devices` | Customer devices. |"
                                },
                                "key": {
                                  "type": "string",
                                  "description": "Specifies key for this segment."
                                },
                                "sendAttempts": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "description": "Specifies send attempts for this segment.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                },
                                "sent": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "description": "Specifies sent for this segment.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                },
                                "sendFailures": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "description": "Specifies send failures for this segment.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                },
                                "sendFailureRate": {
                                  "type": [
                                    "number",
                                    "null"
                                  ],
                                  "minimum": 0,
                                  "maximum": 1,
                                  "description": "Specifies send failure rate for this segment.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                                },
                                "completedConversations": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "description": "Specifies completed conversations for this segment.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                },
                                "deliveredConversations": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "description": "Specifies delivered conversations for this segment.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                },
                                "readConversations": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "description": "Specifies read conversations for this segment.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                },
                                "repliedConversations": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "description": "Specifies replied conversations for this segment.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                },
                                "deliveryRate": {
                                  "type": [
                                    "number",
                                    "null"
                                  ],
                                  "minimum": 0,
                                  "maximum": 1,
                                  "description": "Specifies delivery rate for this segment.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                                },
                                "readRate": {
                                  "type": [
                                    "number",
                                    "null"
                                  ],
                                  "minimum": 0,
                                  "maximum": 1,
                                  "description": "Specifies read rate for this segment.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                                },
                                "replyRate": {
                                  "type": [
                                    "number",
                                    "null"
                                  ],
                                  "minimum": 0,
                                  "maximum": 1,
                                  "description": "Specifies reply rate for this segment.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                                },
                                "averageCustomerReplyMs": {
                                  "type": [
                                    "number",
                                    "null"
                                  ],
                                  "minimum": 0,
                                  "description": "Specifies average customer reply ms for this segment.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                },
                                "shareOfConversations": {
                                  "type": [
                                    "number",
                                    "null"
                                  ],
                                  "minimum": 0,
                                  "maximum": 1,
                                  "description": "Specifies share of conversations for this segment.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                                },
                                "shareOfSends": {
                                  "type": [
                                    "number",
                                    "null"
                                  ],
                                  "minimum": 0,
                                  "maximum": 1,
                                  "description": "Specifies share of sends for this segment.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                                },
                                "readRateInterval95": {
                                  "type": [
                                    "array",
                                    "null"
                                  ],
                                  "minItems": 2,
                                  "maxItems": 2,
                                  "items": {
                                    "type": "number",
                                    "minimum": 0,
                                    "maximum": 1
                                  },
                                  "description": "95% Wilson interval for observed conversation receipts or replies; not a causal effect.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `array`; Array size: `2` through `2` items; Item numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `2` through `2` items |\n| Item numeric value | `0` through `1` (inclusive) |"
                                },
                                "replyRateInterval95": {
                                  "type": [
                                    "array",
                                    "null"
                                  ],
                                  "minItems": 2,
                                  "maxItems": 2,
                                  "items": {
                                    "type": "number",
                                    "minimum": 0,
                                    "maximum": 1
                                  },
                                  "description": "95% Wilson interval for observed conversation receipts or replies; not a causal effect.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `array`; Array size: `2` through `2` items; Item numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `2` through `2` items |\n| Item numeric value | `0` through `1` (inclusive) |"
                                },
                                "readRateDifference": {
                                  "type": [
                                    "number",
                                    "null"
                                  ],
                                  "minimum": -1,
                                  "maximum": 1,
                                  "description": "Specifies read rate difference for this segment.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `-1` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `-1` through `1` (inclusive) |"
                                },
                                "replyRateDifference": {
                                  "type": [
                                    "number",
                                    "null"
                                  ],
                                  "minimum": -1,
                                  "maximum": 1,
                                  "description": "Specifies reply rate difference for this segment.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `-1` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `-1` through `1` (inclusive) |"
                                }
                              },
                              "required": [
                                "dimension",
                                "key",
                                "sendAttempts",
                                "sent",
                                "sendFailures",
                                "sendFailureRate",
                                "completedConversations",
                                "deliveredConversations",
                                "readConversations",
                                "repliedConversations",
                                "deliveryRate",
                                "readRate",
                                "replyRate",
                                "averageCustomerReplyMs",
                                "shareOfConversations",
                                "shareOfSends",
                                "readRateInterval95",
                                "replyRateInterval95",
                                "readRateDifference",
                                "replyRateDifference"
                              ]
                            },
                            "description": "Segments associated with this message analysi."
                          }
                        },
                        "required": [
                          "complete",
                          "segments"
                        ],
                        "description": "Structured message analysis values for this all of."
                      },
                      "customerActivity": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "observed": {
                            "type": "boolean",
                            "description": "Whether observed."
                          },
                          "onlineSignals": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies online signals for this customer activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "offlineSignals": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies offline signals for this customer activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "typingSignals": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies typing signals for this customer activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          }
                        },
                        "required": [
                          "observed",
                          "onlineSignals",
                          "offlineSignals",
                          "typingSignals"
                        ],
                        "description": "Structured customer activity values for this all of."
                      },
                      "accountActivity": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "observed": {
                            "type": "boolean",
                            "description": "Whether observed."
                          },
                          "primaryPhoneActivitySignals": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies primary phone activity signals for this account activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "primaryPhoneActivePeriods": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies primary phone active periods for this account activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "completedPhoneActivityPeriods": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies completed phone activity periods for this account activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "phoneActivityMs": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies phone activity ms for this account activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "averagePhoneActivityMs": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "description": "Specifies average phone activity ms for this account activity.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "phoneQuietGaps": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies phone quiet gaps for this account activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "phoneQuietMs": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies phone quiet ms for this account activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "averagePhoneQuietMs": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "description": "Specifies average phone quiet ms for this account activity.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "primaryPhoneMessages": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies primary phone messages for this account activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "otherDeviceMessages": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies other device messages for this account activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "lastPrimaryPhoneAt": {
                            "type": [
                              "integer",
                              "null"
                            ],
                            "description": "Unix milliseconds.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
                          },
                          "primaryPhoneReplies": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies primary phone replies for this account activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "otherDeviceReplies": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies other device replies for this account activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "averagePrimaryPhoneResponseMs": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "description": "Specifies average primary phone response ms for this account activity.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "averageOtherDeviceResponseMs": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "description": "Specifies average other device response ms for this account activity.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          }
                        },
                        "required": [
                          "observed",
                          "primaryPhoneActivitySignals",
                          "primaryPhoneActivePeriods",
                          "completedPhoneActivityPeriods",
                          "phoneActivityMs",
                          "averagePhoneActivityMs",
                          "phoneQuietGaps",
                          "phoneQuietMs",
                          "averagePhoneQuietMs",
                          "primaryPhoneMessages",
                          "otherDeviceMessages",
                          "lastPrimaryPhoneAt",
                          "primaryPhoneReplies",
                          "otherDeviceReplies",
                          "averagePrimaryPhoneResponseMs",
                          "averageOtherDeviceResponseMs"
                        ],
                        "description": "Structured account activity values for this all of."
                      },
                      "responseQueue": {
                        "anyOf": [
                          {
                            "type": "object",
                            "allOf": [
                              {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                  "awaitingReply": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Specifies awaiting reply for this all of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "oldestWaitingMs": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Specifies oldest waiting ms for this all of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "observedAt": {
                                    "type": "integer",
                                    "description": "Unix milliseconds."
                                  },
                                  "complete": {
                                    "type": "boolean",
                                    "description": "Whether complete."
                                  }
                                },
                                "required": [
                                  "awaitingReply",
                                  "oldestWaitingMs",
                                  "observedAt",
                                  "complete"
                                ]
                              }
                            ]
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Specifies response queue for this all of.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `awaitingReply`, `oldestWaitingMs`, `observedAt`, `complete` |\n| Alternative 2 | `null` |"
                      },
                      "calls": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "total": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Final total for this order or price summary.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "answered": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies answered for this call.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "missed": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies missed for this call.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "declined": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies declined for this call.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "failed": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies failed for this call.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "ringing": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies ringing for this call.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "answerRate": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "maximum": 1,
                            "description": "Specifies answer rate for this call.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                          },
                          "talkSeconds": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies talk seconds for this call.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "timedAnswered": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies timed answered for this call.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "timedPickup": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies timed pickup for this call.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "averageTalkSeconds": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "description": "Specifies average talk seconds for this call.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "medianTalkSeconds": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "description": "Specifies median talk seconds for this call.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "p95TalkSeconds": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "description": "Specifies p95 talk seconds for this call.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "averagePickupMs": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "description": "Specifies average pickup ms for this call.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "p95PickupMs": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "description": "Specifies p95 pickup ms for this call.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "shortAnswered": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies short answered for this call.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "video": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies video for this call.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "directions": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                              "inbound": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                  "total": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Final total for this order or price summary.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "answered": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Specifies answered for this inbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "missed": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Specifies missed for this inbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "declined": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Specifies declined for this inbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "failed": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Specifies failed for this inbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "ringing": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Specifies ringing for this inbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "answerRate": {
                                    "type": [
                                      "number",
                                      "null"
                                    ],
                                    "minimum": 0,
                                    "maximum": 1,
                                    "description": "Specifies answer rate for this inbound.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                                  },
                                  "talkSeconds": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Specifies talk seconds for this inbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "timedAnswered": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Specifies timed answered for this inbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "timedPickup": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Specifies timed pickup for this inbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "averageTalkSeconds": {
                                    "type": [
                                      "number",
                                      "null"
                                    ],
                                    "minimum": 0,
                                    "description": "Specifies average talk seconds for this inbound.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "medianTalkSeconds": {
                                    "type": [
                                      "number",
                                      "null"
                                    ],
                                    "minimum": 0,
                                    "description": "Specifies median talk seconds for this inbound.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "p95TalkSeconds": {
                                    "type": [
                                      "number",
                                      "null"
                                    ],
                                    "minimum": 0,
                                    "description": "Specifies p95 talk seconds for this inbound.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "averagePickupMs": {
                                    "type": [
                                      "number",
                                      "null"
                                    ],
                                    "minimum": 0,
                                    "description": "Specifies average pickup ms for this inbound.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "p95PickupMs": {
                                    "type": [
                                      "number",
                                      "null"
                                    ],
                                    "minimum": 0,
                                    "description": "Specifies p95 pickup ms for this inbound.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "shortAnswered": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Specifies short answered for this inbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "video": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Specifies video for this inbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  }
                                },
                                "required": [
                                  "total",
                                  "answered",
                                  "missed",
                                  "declined",
                                  "failed",
                                  "ringing",
                                  "answerRate",
                                  "talkSeconds",
                                  "timedAnswered",
                                  "timedPickup",
                                  "averageTalkSeconds",
                                  "medianTalkSeconds",
                                  "p95TalkSeconds",
                                  "averagePickupMs",
                                  "p95PickupMs",
                                  "shortAnswered",
                                  "video"
                                ],
                                "description": "Structured inbound values for this direction."
                              },
                              "outbound": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                  "total": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Final total for this order or price summary.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "answered": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Specifies answered for this outbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "missed": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Specifies missed for this outbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "declined": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Specifies declined for this outbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "failed": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Specifies failed for this outbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "ringing": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Specifies ringing for this outbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "answerRate": {
                                    "type": [
                                      "number",
                                      "null"
                                    ],
                                    "minimum": 0,
                                    "maximum": 1,
                                    "description": "Specifies answer rate for this outbound.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                                  },
                                  "talkSeconds": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Specifies talk seconds for this outbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "timedAnswered": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Specifies timed answered for this outbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "timedPickup": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Specifies timed pickup for this outbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "averageTalkSeconds": {
                                    "type": [
                                      "number",
                                      "null"
                                    ],
                                    "minimum": 0,
                                    "description": "Specifies average talk seconds for this outbound.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "medianTalkSeconds": {
                                    "type": [
                                      "number",
                                      "null"
                                    ],
                                    "minimum": 0,
                                    "description": "Specifies median talk seconds for this outbound.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "p95TalkSeconds": {
                                    "type": [
                                      "number",
                                      "null"
                                    ],
                                    "minimum": 0,
                                    "description": "Specifies p95 talk seconds for this outbound.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "averagePickupMs": {
                                    "type": [
                                      "number",
                                      "null"
                                    ],
                                    "minimum": 0,
                                    "description": "Specifies average pickup ms for this outbound.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "p95PickupMs": {
                                    "type": [
                                      "number",
                                      "null"
                                    ],
                                    "minimum": 0,
                                    "description": "Specifies p95 pickup ms for this outbound.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "shortAnswered": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Specifies short answered for this outbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  },
                                  "video": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Specifies video for this outbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                  }
                                },
                                "required": [
                                  "total",
                                  "answered",
                                  "missed",
                                  "declined",
                                  "failed",
                                  "ringing",
                                  "answerRate",
                                  "talkSeconds",
                                  "timedAnswered",
                                  "timedPickup",
                                  "averageTalkSeconds",
                                  "medianTalkSeconds",
                                  "p95TalkSeconds",
                                  "averagePickupMs",
                                  "p95PickupMs",
                                  "shortAnswered",
                                  "video"
                                ],
                                "description": "Structured outbound values for this direction."
                              }
                            },
                            "required": [
                              "inbound",
                              "outbound"
                            ],
                            "description": "Structured directions values for this call."
                          },
                          "mediaQuality": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                              "measuredCalls": {
                                "type": "integer",
                                "minimum": 0,
                                "description": "Specifies measured calls for this media quality.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                              },
                              "averageJitterMs": {
                                "type": [
                                  "number",
                                  "null"
                                ],
                                "minimum": 0,
                                "description": "Specifies average jitter ms for this media quality.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                              },
                              "averageRttMs": {
                                "type": [
                                  "number",
                                  "null"
                                ],
                                "minimum": 0,
                                "description": "Specifies average rtt ms for this media quality.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                              },
                              "packetsLost": {
                                "type": [
                                  "integer",
                                  "null"
                                ],
                                "minimum": 0,
                                "description": "Specifies packets lost for this media quality.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                              }
                            },
                            "required": [
                              "measuredCalls",
                              "averageJitterMs",
                              "averageRttMs",
                              "packetsLost"
                            ],
                            "description": "Structured media quality values for this call."
                          },
                          "appQuality": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                              "measuredCalls": {
                                "type": "integer",
                                "minimum": 0,
                                "description": "Specifies measured calls for this app quality.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                              },
                              "averageJitterMs": {
                                "type": [
                                  "number",
                                  "null"
                                ],
                                "minimum": 0,
                                "description": "Specifies average jitter ms for this app quality.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                              },
                              "averageRttMs": {
                                "type": [
                                  "number",
                                  "null"
                                ],
                                "minimum": 0,
                                "description": "Specifies average rtt ms for this app quality.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                              },
                              "packetLossRate": {
                                "type": [
                                  "number",
                                  "null"
                                ],
                                "minimum": 0,
                                "maximum": 1,
                                "description": "Specifies packet loss rate for this app quality.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                              },
                              "reconnects": {
                                "type": [
                                  "integer",
                                  "null"
                                ],
                                "minimum": 0,
                                "description": "Specifies reconnects for this app quality.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                              }
                            },
                            "required": [
                              "measuredCalls",
                              "averageJitterMs",
                              "averageRttMs",
                              "packetLossRate",
                              "reconnects"
                            ],
                            "description": "Structured app quality values for this call."
                          },
                          "endReasons": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "properties": {
                                "code": {
                                  "type": "string",
                                  "description": "Stable machine-readable code for this result."
                                },
                                "count": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "description": "Number of matching resources.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                }
                              },
                              "required": [
                                "code",
                                "count"
                              ]
                            },
                            "description": "End reasons associated with this call."
                          },
                          "appErrors": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "properties": {
                                "code": {
                                  "type": "string",
                                  "description": "Stable machine-readable code for this result."
                                },
                                "count": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "description": "Number of matching resources.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                }
                              },
                              "required": [
                                "code",
                                "count"
                              ]
                            },
                            "description": "App errors associated with this call."
                          },
                          "transports": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "properties": {
                                "code": {
                                  "type": "string",
                                  "description": "Stable machine-readable code for this result."
                                },
                                "count": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "description": "Number of matching resources.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                }
                              },
                              "required": [
                                "code",
                                "count"
                              ]
                            },
                            "description": "Transports associated with this call."
                          },
                          "multiParticipantCalls": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies multi participant calls for this call.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "followUp": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                              "eligibleMissed": {
                                "type": "integer",
                                "minimum": 0,
                                "description": "Specifies eligible missed for this follow up.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                              },
                              "returnedWithin24h": {
                                "type": "integer",
                                "minimum": 0,
                                "description": "Specifies returned within24h for this follow up.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                              },
                              "rate": {
                                "type": [
                                  "number",
                                  "null"
                                ],
                                "minimum": 0,
                                "maximum": 1,
                                "description": "Specifies rate for this follow up.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                              },
                              "averageDelayMs": {
                                "type": [
                                  "number",
                                  "null"
                                ],
                                "minimum": 0,
                                "description": "Specifies average delay ms for this follow up.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                              },
                              "pendingWindow": {
                                "type": "integer",
                                "minimum": 0,
                                "description": "Specifies pending window for this follow up.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                              },
                              "unknownContact": {
                                "type": "integer",
                                "minimum": 0,
                                "description": "Specifies unknown contact for this follow up.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                              }
                            },
                            "required": [
                              "eligibleMissed",
                              "returnedWithin24h",
                              "rate",
                              "averageDelayMs",
                              "pendingWindow",
                              "unknownContact"
                            ],
                            "description": "Structured follow up values for this call."
                          }
                        },
                        "required": [
                          "total",
                          "answered",
                          "missed",
                          "declined",
                          "failed",
                          "ringing",
                          "answerRate",
                          "talkSeconds",
                          "timedAnswered",
                          "timedPickup",
                          "averageTalkSeconds",
                          "medianTalkSeconds",
                          "p95TalkSeconds",
                          "averagePickupMs",
                          "p95PickupMs",
                          "shortAnswered",
                          "video",
                          "directions",
                          "mediaQuality",
                          "appQuality",
                          "endReasons",
                          "appErrors",
                          "transports",
                          "multiParticipantCalls",
                          "followUp"
                        ],
                        "description": "Structured calls values for this all of."
                      },
                      "deviceAnalytics": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "detector": {
                            "type": "string",
                            "enum": [
                              "message_id_prefix/v1"
                            ],
                            "description": "Specifies detector for this device analytic.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `message_id_prefix/v1` | Message id prefix/v1. |"
                          },
                          "measured": {
                            "type": "boolean",
                            "description": "True when at least one retained bucket has client-family measurement coverage, including buckets with zero messages."
                          },
                          "complete": {
                            "type": "boolean",
                            "description": "True when measured is true, every retained bucket has device-family coverage and conversation receipt coverage is complete. False when coverage is missing or records, conversations or receipt joins were dropped. Inventory truncation is reported separately."
                          },
                          "observedBuckets": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies observed buckets for this device analytic.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "customerMessages": {
                            "type": [
                              "integer",
                              "null"
                            ],
                            "minimum": 0,
                            "description": "Specifies customer messages for this device analytic.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "accountMessages": {
                            "type": [
                              "integer",
                              "null"
                            ],
                            "minimum": 0,
                            "description": "Specifies account messages for this device analytic.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "customerPlatforms": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "properties": {
                                "platform": {
                                  "type": "string",
                                  "enum": [
                                    "web",
                                    "android",
                                    "iphone",
                                    "ipad",
                                    "macos",
                                    "windows",
                                    "wearable",
                                    "ar_device",
                                    "unknown"
                                  ],
                                  "description": "Sending client family estimated from a message ID prefix; not verified hardware or operating system.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `web` | Web client. |\n| `android` | Android client. |\n| `iphone` | iPhone client. |\n| `ipad` | iPad client. |\n| `macos` | macOS client. |\n| `windows` | Windows client. |\n| `wearable` | Wearable client. |\n| `ar_device` | AR device client. |\n| `unknown` | No recognized client-family prefix. |"
                                },
                                "messages": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "description": "Specifies messages for this customer platform.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                },
                                "share": {
                                  "type": [
                                    "number",
                                    "null"
                                  ],
                                  "minimum": 0,
                                  "maximum": 1,
                                  "description": "Specifies share for this customer platform.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                                }
                              },
                              "required": [
                                "platform",
                                "messages",
                                "share"
                              ]
                            },
                            "description": "Customer platforms associated with this device analytic."
                          },
                          "accountPlatforms": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "properties": {
                                "platform": {
                                  "type": "string",
                                  "enum": [
                                    "web",
                                    "android",
                                    "iphone",
                                    "ipad",
                                    "macos",
                                    "windows",
                                    "wearable",
                                    "ar_device",
                                    "unknown"
                                  ],
                                  "description": "Sending client family estimated from a message ID prefix; not verified hardware or operating system.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `web` | Web client. |\n| `android` | Android client. |\n| `iphone` | iPhone client. |\n| `ipad` | iPad client. |\n| `macos` | macOS client. |\n| `windows` | Windows client. |\n| `wearable` | Wearable client. |\n| `ar_device` | AR device client. |\n| `unknown` | No recognized client-family prefix. |"
                                },
                                "messages": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "description": "Specifies messages for this account platform.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                },
                                "share": {
                                  "type": [
                                    "number",
                                    "null"
                                  ],
                                  "minimum": 0,
                                  "maximum": 1,
                                  "description": "Specifies share for this account platform.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                                }
                              },
                              "required": [
                                "platform",
                                "messages",
                                "share"
                              ]
                            },
                            "description": "Account platforms associated with this device analytic."
                          },
                          "inventory": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "additionalProperties": false,
                            "properties": {
                              "listObserved": {
                                "type": "boolean",
                                "description": "True after a full device list for this number was observed."
                              },
                              "listCurrent": {
                                "type": "boolean",
                                "description": "True when a full list was observed and no later list-change signal invalidated it. Membership and device count are unknown until another full list after a change."
                              },
                              "observedAt": {
                                "type": [
                                  "integer",
                                  "null"
                                ],
                                "description": "Unix milliseconds.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
                              },
                              "deviceCount": {
                                "type": [
                                  "integer",
                                  "null"
                                ],
                                "minimum": 0,
                                "description": "Number of devices.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                              },
                              "truncated": {
                                "type": "boolean",
                                "description": "True when the bounded inventory omitted devices. At most 25 device rows are returned; a current full-list device count can be larger."
                              },
                              "devices": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "additionalProperties": false,
                                  "properties": {
                                    "deviceIndex": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 999,
                                      "description": "Specifies device index for this device.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `999` (inclusive) |"
                                    },
                                    "estimatedPlatform": {
                                      "type": "string",
                                      "enum": [
                                        "web",
                                        "android",
                                        "iphone",
                                        "ipad",
                                        "macos",
                                        "windows",
                                        "wearable",
                                        "ar_device",
                                        "unknown"
                                      ],
                                      "description": "Sending client family estimated from a message ID prefix; not verified hardware or operating system.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `web` | Web client. |\n| `android` | Android client. |\n| `iphone` | iPhone client. |\n| `ipad` | iPad client. |\n| `macos` | macOS client. |\n| `windows` | Windows client. |\n| `wearable` | Wearable client. |\n| `ar_device` | AR device client. |\n| `unknown` | No recognized client-family prefix. |"
                                    },
                                    "reportedClass": {
                                      "type": "string",
                                      "enum": [
                                        "phone",
                                        "desktop_app",
                                        "browser",
                                        "business_api",
                                        "unknown"
                                      ],
                                      "description": "Specifies reported class for this device.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `phone` | Phone. |\n| `desktop_app` | Desktop app. |\n| `browser` | Browser. |\n| `business_api` | Business API. |\n| `unknown` | No recognized reported device class. |"
                                    },
                                    "lastActiveAt": {
                                      "type": [
                                        "integer",
                                        "null"
                                      ],
                                      "description": "Unix milliseconds.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
                                    },
                                    "listed": {
                                      "type": [
                                        "boolean",
                                        "null"
                                      ],
                                      "description": "Whether this device index belongs to the latest observed full list. Null when that list is no longer current.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `boolean` |\n| Alternative 2 | `null` |"
                                    }
                                  },
                                  "required": [
                                    "deviceIndex",
                                    "estimatedPlatform",
                                    "reportedClass",
                                    "lastActiveAt",
                                    "listed"
                                  ]
                                },
                                "maxItems": 25,
                                "description": "Devices associated with this inventory.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `25` items |"
                              }
                            },
                            "required": [
                              "listObserved",
                              "listCurrent",
                              "observedAt",
                              "deviceCount",
                              "truncated",
                              "devices"
                            ],
                            "description": "Structured inventory values for this device analytic.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `listObserved`, `listCurrent`, `observedAt`, `deviceCount`, `truncated`, `devices` |\n| Alternative 2 | `null` |"
                          }
                        },
                        "required": [
                          "detector",
                          "measured",
                          "complete",
                          "observedBuckets",
                          "customerMessages",
                          "accountMessages",
                          "customerPlatforms",
                          "accountPlatforms",
                          "inventory"
                        ],
                        "description": "Observed message client-family distributions and a bounded inventory of this number's own devices. The combined summary has null inventory."
                      },
                      "conversationBreakdown": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "measured": {
                            "type": "boolean",
                            "description": "True when at least one retained bucket includes joint conversation categories."
                          },
                          "complete": {
                            "type": "boolean",
                            "description": "True when measured is true, every retained bucket has joint conversation coverage, no conversation, record or receipt-join coverage was lost and the returned groups are not truncated. Rates and averages are null when false."
                          },
                          "observedBuckets": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies observed buckets for this conversation breakdown.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "droppedConversations": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies dropped conversations for this conversation breakdown.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "truncated": {
                            "type": "boolean",
                            "description": "True when the requested scope exceeded 4096 number/time/category groups. The largest groups are retained; rates and averages are null."
                          },
                          "buckets": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "properties": {
                                "ts": {
                                  "type": "integer",
                                  "description": "Unix milliseconds."
                                },
                                "complete": {
                                  "type": "boolean",
                                  "description": "True when this UTC time bucket has joint category coverage and no conversations or records were dropped. A summary bucket also requires every scoped number to have a bucket."
                                }
                              },
                              "required": [
                                "ts",
                                "complete"
                              ]
                            },
                            "description": "Buckets associated with this conversation breakdown."
                          },
                          "rows": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "properties": {
                                "ts": {
                                  "type": "integer",
                                  "description": "Unix milliseconds."
                                },
                                "messageType": {
                                  "type": "string",
                                  "enum": [
                                    "text",
                                    "image",
                                    "video",
                                    "audio",
                                    "document",
                                    "sticker",
                                    "interactive",
                                    "template",
                                    "other"
                                  ],
                                  "description": "Category assigned to message.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `text` | Text. |\n| `image` | Image. |\n| `video` | Video. |\n| `audio` | Audio. |\n| `document` | Document. |\n| `sticker` | Sticker. |\n| `interactive` | Interactive. |\n| `template` | Template. |\n| `other` | Other. |"
                                },
                                "textBand": {
                                  "type": "string",
                                  "enum": [
                                    "none",
                                    "short",
                                    "medium",
                                    "long",
                                    "very_long",
                                    "unknown"
                                  ],
                                  "description": "Specifies text band for this row.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `short` | Short. |\n| `medium` | Medium. |\n| `long` | Long. |\n| `very_long` | Very long. |\n| `unknown` | Unknown. |"
                                },
                                "origin": {
                                  "type": "string",
                                  "enum": [
                                    "api",
                                    "campaign",
                                    "other"
                                  ],
                                  "description": "Specifies origin for this row.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `api` | API send. |\n| `campaign` | Campaign send. |\n| `other` | Other or unclassified send source. |"
                                },
                                "recipientCountry": {
                                  "type": "string",
                                  "pattern": "^(unknown|[A-Z]{2})$",
                                  "description": "Numbering country inferred from a full phone number or valid BSUID prefix; Unknown for missing historical metadata. Not current location.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^(unknown\\|[A-Z]{2})$` |"
                                },
                                "recipientDeviceCount": {
                                  "type": "string",
                                  "enum": [
                                    "primary_only",
                                    "one_linked",
                                    "two_plus_linked",
                                    "unknown"
                                  ],
                                  "description": "Observed linked-device range; device zero is the primary and is excluded from linked counts.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `primary_only` | Primary only. |\n| `one_linked` | One linked. |\n| `two_plus_linked` | Two plus linked. |\n| `unknown` | Unknown. |"
                                },
                                "callingCode": {
                                  "type": "string",
                                  "pattern": "^(unknown|[1-9][0-9]{0,2})$",
                                  "description": "Machine-readable calling code for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^(unknown\\|[1-9][0-9]{0,2})$` |"
                                },
                                "customerDevices": {
                                  "type": "string",
                                  "enum": [
                                    "single",
                                    "multiple",
                                    "unknown"
                                  ],
                                  "description": "Specifies customer devices for this row.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `single` | Single. |\n| `multiple` | Multiple. |\n| `unknown` | Unknown. |"
                                },
                                "completedConversations": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "description": "Specifies completed conversations for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                },
                                "deliveredConversations": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "description": "Specifies delivered conversations for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                },
                                "readConversations": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "description": "Specifies read conversations for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                },
                                "repliedConversations": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "description": "Specifies replied conversations for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                },
                                "replyLatencySumMs": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "description": "Specifies reply latency sum ms for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                },
                                "readRate": {
                                  "type": [
                                    "number",
                                    "null"
                                  ],
                                  "minimum": 0,
                                  "maximum": 1,
                                  "description": "Specifies read rate for this row.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                                },
                                "replyRate": {
                                  "type": [
                                    "number",
                                    "null"
                                  ],
                                  "minimum": 0,
                                  "maximum": 1,
                                  "description": "Specifies reply rate for this row.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                                },
                                "averageCustomerReplyMs": {
                                  "type": [
                                    "number",
                                    "null"
                                  ],
                                  "minimum": 0,
                                  "description": "Specifies average customer reply ms for this row.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                }
                              },
                              "required": [
                                "ts",
                                "messageType",
                                "textBand",
                                "origin",
                                "recipientCountry",
                                "recipientDeviceCount",
                                "callingCode",
                                "customerDevices",
                                "completedConversations",
                                "deliveredConversations",
                                "readConversations",
                                "repliedConversations",
                                "replyLatencySumMs",
                                "readRate",
                                "replyRate",
                                "averageCustomerReplyMs"
                              ]
                            },
                            "maxItems": 4096,
                            "description": "Rows associated with this conversation breakdown.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `4096` items |"
                          }
                        },
                        "required": [
                          "measured",
                          "complete",
                          "observedBuckets",
                          "droppedConversations",
                          "truncated",
                          "buckets",
                          "rows"
                        ],
                        "description": "Completed 24-hour conversation cohorts grouped jointly by completion bucket, first outgoing message metadata, calling code and observed device-count class."
                      },
                      "recipientActivity": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "measured": {
                            "type": "boolean",
                            "description": "Whether measured."
                          },
                          "complete": {
                            "type": "boolean",
                            "description": "Whether complete."
                          },
                          "observedBuckets": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies observed buckets for this recipient activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "droppedSignals": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies dropped signals for this recipient activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "truncated": {
                            "type": "boolean",
                            "description": "Whether truncated."
                          },
                          "rows": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "additionalProperties": false,
                              "properties": {
                                "ts": {
                                  "type": "integer",
                                  "description": "Unix milliseconds."
                                },
                                "recipientCountry": {
                                  "type": "string",
                                  "pattern": "^(unknown|[A-Z]{2})$",
                                  "description": "Specifies recipient country for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^(unknown\\|[A-Z]{2})$` |"
                                },
                                "recipientDeviceCount": {
                                  "type": "string",
                                  "enum": [
                                    "primary_only",
                                    "one_linked",
                                    "two_plus_linked",
                                    "unknown"
                                  ],
                                  "description": "Number of recipient devices.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `primary_only` | Primary only. |\n| `one_linked` | One linked. |\n| `two_plus_linked` | Two plus linked. |\n| `unknown` | Unknown. |"
                                },
                                "deviceSource": {
                                  "type": "string",
                                  "enum": [
                                    "primary",
                                    "linked",
                                    "unknown"
                                  ],
                                  "description": "Specifies device source for this row.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `primary` | Primary. |\n| `linked` | Linked. |\n| `unknown` | Unknown. |"
                                },
                                "incomingMessages": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "description": "Specifies incoming messages for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                },
                                "deliveryReceipts": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "description": "Specifies delivery receipts for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                },
                                "readReceipts": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "description": "Specifies read receipts for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                },
                                "onlineSignals": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "description": "Specifies online signals for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                },
                                "offlineSignals": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "description": "Specifies offline signals for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                },
                                "typingSignals": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "description": "Specifies typing signals for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                },
                                "lastSignalAt": {
                                  "type": "integer",
                                  "description": "Unix milliseconds."
                                },
                                "quietGaps": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "description": "Specifies quiet gaps for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                },
                                "quietGapMs": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "description": "Specifies quiet gap ms for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                },
                                "averageQuietGapMs": {
                                  "type": [
                                    "number",
                                    "null"
                                  ],
                                  "minimum": 0,
                                  "description": "Specifies average quiet gap ms for this row.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                                }
                              },
                              "required": [
                                "ts",
                                "recipientCountry",
                                "recipientDeviceCount",
                                "deviceSource",
                                "incomingMessages",
                                "deliveryReceipts",
                                "readReceipts",
                                "onlineSignals",
                                "offlineSignals",
                                "typingSignals",
                                "lastSignalAt",
                                "quietGaps",
                                "quietGapMs",
                                "averageQuietGapMs"
                              ]
                            },
                            "maxItems": 4096,
                            "description": "Rows associated with this recipient activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `4096` items |"
                          }
                        },
                        "required": [
                          "measured",
                          "complete",
                          "observedBuckets",
                          "droppedSignals",
                          "truncated",
                          "rows"
                        ],
                        "description": "Hourly aggregate recipient observations, grouped jointly by numbering country, observed linked-device count and sender-device class. Incoming messages and matched delivery/read receipts are deduplicated by native message and device in bounded memory. Presence is user-level and uses Unknown device source. Quiet gaps of at least 15 minutes are completed gaps between observed signals on the same device, never verified offline periods. No recipient identity, native message ID or recipient device index is retained. Coverage is explicit; older retained buckets are unmeasured. Message telemetry remains Linked Devices only; Official API message activity is not measured."
                      }
                    },
                    "required": [
                      "measured",
                      "observedHours",
                      "lastObservedAt",
                      "outgoingMessages",
                      "incomingMessages",
                      "sendAttempts",
                      "sendFailures",
                      "sendFailureRate",
                      "businessReplies",
                      "averageBusinessResponseMs",
                      "onlineMs",
                      "disconnects",
                      "connectFailures",
                      "streamErrors",
                      "keepaliveTimeouts",
                      "engagement",
                      "totalNumbers",
                      "measuredNumbers",
                      "connectedNumbers",
                      "messageAnalysis",
                      "customerActivity",
                      "accountActivity",
                      "responseQueue",
                      "calls",
                      "deviceAnalytics",
                      "conversationBreakdown"
                    ]
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies summary for this platform whats app analytic.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `measured`, `observedHours`, `lastObservedAt`, `outgoingMessages`, `incomingMessages`, `sendAttempts`, `sendFailures`, `sendFailureRate`, `businessReplies`, `averageBusinessResponseMs`, `onlineMs`, `disconnects`, `connectFailures`, `streamErrors`, `keepaliveTimeouts`, `engagement`, `totalNumbers`, `measuredNumbers`, `connectedNumbers`, `messageAnalysis`, `customerActivity`, `accountActivity`, `responseQueue`, `calls`, `deviceAnalytics`, `conversationBreakdown` |\n| Alternative 2 | `null` |"
          },
          "numbers": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "sessionId": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                },
                "projectId": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                },
                "name": {
                  "type": "string",
                  "description": "Human-readable name for this resource."
                },
                "backend": {
                  "type": "string",
                  "description": "Specifies backend for this number."
                },
                "status": {
                  "type": "string",
                  "description": "Current status of this resource or operation."
                },
                "measured": {
                  "type": "boolean",
                  "description": "Whether measured."
                },
                "observedHours": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies observed hours for this number.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "lastObservedAt": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "description": "Unix milliseconds.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
                },
                "outgoingMessages": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies outgoing messages for this number.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "incomingMessages": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies incoming messages for this number.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "sendAttempts": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies send attempts for this number.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "sendFailures": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies send failures for this number.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "sendFailureRate": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "minimum": 0,
                  "maximum": 1,
                  "description": "Specifies send failure rate for this number.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                },
                "businessReplies": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies business replies for this number.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "averageBusinessResponseMs": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "minimum": 0,
                  "description": "Specifies average business response ms for this number.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "onlineMs": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies online ms for this number.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "disconnects": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies disconnects for this number.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "connectFailures": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies connect failures for this number.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "streamErrors": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies stream errors for this number.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "keepaliveTimeouts": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies keepalive timeouts for this number.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "engagement": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "windowHours": {
                      "type": "integer",
                      "enum": [
                        24
                      ],
                      "description": "Specifies window hours for this engagement.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `24` | 24. |"
                    },
                    "completedConversations": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies completed conversations for this engagement.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "deliveredConversations": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies delivered conversations for this engagement.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "readConversations": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies read conversations for this engagement.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "repliedConversations": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies replied conversations for this engagement.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "deliveryRate": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "minimum": 0,
                      "maximum": 1,
                      "description": "Specifies delivery rate for this engagement.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                    },
                    "readRate": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "minimum": 0,
                      "maximum": 1,
                      "description": "Specifies read rate for this engagement.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                    },
                    "replyRate": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "minimum": 0,
                      "maximum": 1,
                      "description": "Specifies reply rate for this engagement.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                    },
                    "averageCustomerReplyMs": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Specifies average customer reply ms for this engagement.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "complete": {
                      "type": "boolean",
                      "description": "Whether complete."
                    },
                    "droppedConversations": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies dropped conversations for this engagement.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "droppedRecords": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies dropped records for this engagement.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "droppedReceiptJoins": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies dropped receipt joins for this engagement.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    }
                  },
                  "required": [
                    "windowHours",
                    "completedConversations",
                    "deliveredConversations",
                    "readConversations",
                    "repliedConversations",
                    "deliveryRate",
                    "readRate",
                    "replyRate",
                    "averageCustomerReplyMs",
                    "complete",
                    "droppedConversations",
                    "droppedRecords",
                    "droppedReceiptJoins"
                  ],
                  "description": "Structured engagement values for this number."
                },
                "messageAnalysis": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "complete": {
                      "type": "boolean",
                      "description": "Whether complete."
                    },
                    "segments": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "dimension": {
                            "type": "string",
                            "enum": [
                              "message_type",
                              "text_band",
                              "origin",
                              "calling_code",
                              "customer_devices"
                            ],
                            "description": "Specifies dimension for this segment.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `message_type` | Message type. |\n| `text_band` | Text band. |\n| `origin` | Origin. |\n| `calling_code` | Calling code. |\n| `customer_devices` | Customer devices. |"
                          },
                          "key": {
                            "type": "string",
                            "description": "Specifies key for this segment."
                          },
                          "sendAttempts": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies send attempts for this segment.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "sent": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies sent for this segment.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "sendFailures": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies send failures for this segment.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "sendFailureRate": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "maximum": 1,
                            "description": "Specifies send failure rate for this segment.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                          },
                          "completedConversations": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies completed conversations for this segment.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "deliveredConversations": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies delivered conversations for this segment.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "readConversations": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies read conversations for this segment.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "repliedConversations": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies replied conversations for this segment.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "deliveryRate": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "maximum": 1,
                            "description": "Specifies delivery rate for this segment.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                          },
                          "readRate": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "maximum": 1,
                            "description": "Specifies read rate for this segment.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                          },
                          "replyRate": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "maximum": 1,
                            "description": "Specifies reply rate for this segment.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                          },
                          "averageCustomerReplyMs": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "description": "Specifies average customer reply ms for this segment.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "shareOfConversations": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "maximum": 1,
                            "description": "Specifies share of conversations for this segment.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                          },
                          "shareOfSends": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "maximum": 1,
                            "description": "Specifies share of sends for this segment.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                          },
                          "readRateInterval95": {
                            "type": [
                              "array",
                              "null"
                            ],
                            "minItems": 2,
                            "maxItems": 2,
                            "items": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 1
                            },
                            "description": "95% Wilson interval for observed conversation receipts or replies; not a causal effect.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `array`; Array size: `2` through `2` items; Item numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `2` through `2` items |\n| Item numeric value | `0` through `1` (inclusive) |"
                          },
                          "replyRateInterval95": {
                            "type": [
                              "array",
                              "null"
                            ],
                            "minItems": 2,
                            "maxItems": 2,
                            "items": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 1
                            },
                            "description": "95% Wilson interval for observed conversation receipts or replies; not a causal effect.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `array`; Array size: `2` through `2` items; Item numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `2` through `2` items |\n| Item numeric value | `0` through `1` (inclusive) |"
                          },
                          "readRateDifference": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": -1,
                            "maximum": 1,
                            "description": "Specifies read rate difference for this segment.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `-1` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `-1` through `1` (inclusive) |"
                          },
                          "replyRateDifference": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": -1,
                            "maximum": 1,
                            "description": "Specifies reply rate difference for this segment.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `-1` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `-1` through `1` (inclusive) |"
                          }
                        },
                        "required": [
                          "dimension",
                          "key",
                          "sendAttempts",
                          "sent",
                          "sendFailures",
                          "sendFailureRate",
                          "completedConversations",
                          "deliveredConversations",
                          "readConversations",
                          "repliedConversations",
                          "deliveryRate",
                          "readRate",
                          "replyRate",
                          "averageCustomerReplyMs",
                          "shareOfConversations",
                          "shareOfSends",
                          "readRateInterval95",
                          "replyRateInterval95",
                          "readRateDifference",
                          "replyRateDifference"
                        ]
                      },
                      "description": "Segments associated with this message analysi."
                    }
                  },
                  "required": [
                    "complete",
                    "segments"
                  ],
                  "description": "Structured message analysis values for this number."
                },
                "customerActivity": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "observed": {
                      "type": "boolean",
                      "description": "Whether observed."
                    },
                    "onlineSignals": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies online signals for this customer activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "offlineSignals": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies offline signals for this customer activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "typingSignals": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies typing signals for this customer activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    }
                  },
                  "required": [
                    "observed",
                    "onlineSignals",
                    "offlineSignals",
                    "typingSignals"
                  ],
                  "description": "Structured customer activity values for this number."
                },
                "accountActivity": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "observed": {
                      "type": "boolean",
                      "description": "Whether observed."
                    },
                    "primaryPhoneActivitySignals": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies primary phone activity signals for this account activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "primaryPhoneActivePeriods": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies primary phone active periods for this account activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "completedPhoneActivityPeriods": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies completed phone activity periods for this account activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "phoneActivityMs": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies phone activity ms for this account activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "averagePhoneActivityMs": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Specifies average phone activity ms for this account activity.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "phoneQuietGaps": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies phone quiet gaps for this account activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "phoneQuietMs": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies phone quiet ms for this account activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "averagePhoneQuietMs": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Specifies average phone quiet ms for this account activity.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "primaryPhoneMessages": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies primary phone messages for this account activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "otherDeviceMessages": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies other device messages for this account activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "lastPrimaryPhoneAt": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "description": "Unix milliseconds.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
                    },
                    "primaryPhoneReplies": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies primary phone replies for this account activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "otherDeviceReplies": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies other device replies for this account activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "averagePrimaryPhoneResponseMs": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Specifies average primary phone response ms for this account activity.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "averageOtherDeviceResponseMs": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Specifies average other device response ms for this account activity.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    }
                  },
                  "required": [
                    "observed",
                    "primaryPhoneActivitySignals",
                    "primaryPhoneActivePeriods",
                    "completedPhoneActivityPeriods",
                    "phoneActivityMs",
                    "averagePhoneActivityMs",
                    "phoneQuietGaps",
                    "phoneQuietMs",
                    "averagePhoneQuietMs",
                    "primaryPhoneMessages",
                    "otherDeviceMessages",
                    "lastPrimaryPhoneAt",
                    "primaryPhoneReplies",
                    "otherDeviceReplies",
                    "averagePrimaryPhoneResponseMs",
                    "averageOtherDeviceResponseMs"
                  ],
                  "description": "Structured account activity values for this number."
                },
                "responseQueue": {
                  "anyOf": [
                    {
                      "type": "object",
                      "allOf": [
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "properties": {
                            "awaitingReply": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Specifies awaiting reply for this all of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "oldestWaitingMs": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Specifies oldest waiting ms for this all of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "observedAt": {
                              "type": "integer",
                              "description": "Unix milliseconds."
                            },
                            "complete": {
                              "type": "boolean",
                              "description": "Whether complete."
                            }
                          },
                          "required": [
                            "awaitingReply",
                            "oldestWaitingMs",
                            "observedAt",
                            "complete"
                          ]
                        }
                      ]
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Specifies response queue for this number.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `awaitingReply`, `oldestWaitingMs`, `observedAt`, `complete` |\n| Alternative 2 | `null` |"
                },
                "projectName": {
                  "type": "string",
                  "description": "Human-readable project name for this number."
                },
                "calls": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "total": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Final total for this order or price summary.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "answered": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies answered for this call.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "missed": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies missed for this call.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "declined": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies declined for this call.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "failed": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies failed for this call.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "ringing": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies ringing for this call.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "answerRate": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "minimum": 0,
                      "maximum": 1,
                      "description": "Specifies answer rate for this call.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                    },
                    "talkSeconds": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies talk seconds for this call.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "timedAnswered": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies timed answered for this call.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "timedPickup": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies timed pickup for this call.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "averageTalkSeconds": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Specifies average talk seconds for this call.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "medianTalkSeconds": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Specifies median talk seconds for this call.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "p95TalkSeconds": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Specifies p95 talk seconds for this call.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "averagePickupMs": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Specifies average pickup ms for this call.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "p95PickupMs": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Specifies p95 pickup ms for this call.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "shortAnswered": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies short answered for this call.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "video": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies video for this call.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "directions": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "inbound": {
                          "type": "object",
                          "additionalProperties": false,
                          "properties": {
                            "total": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Final total for this order or price summary.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "answered": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Specifies answered for this inbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "missed": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Specifies missed for this inbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "declined": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Specifies declined for this inbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "failed": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Specifies failed for this inbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "ringing": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Specifies ringing for this inbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "answerRate": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "minimum": 0,
                              "maximum": 1,
                              "description": "Specifies answer rate for this inbound.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                            },
                            "talkSeconds": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Specifies talk seconds for this inbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "timedAnswered": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Specifies timed answered for this inbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "timedPickup": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Specifies timed pickup for this inbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "averageTalkSeconds": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "minimum": 0,
                              "description": "Specifies average talk seconds for this inbound.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "medianTalkSeconds": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "minimum": 0,
                              "description": "Specifies median talk seconds for this inbound.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "p95TalkSeconds": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "minimum": 0,
                              "description": "Specifies p95 talk seconds for this inbound.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "averagePickupMs": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "minimum": 0,
                              "description": "Specifies average pickup ms for this inbound.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "p95PickupMs": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "minimum": 0,
                              "description": "Specifies p95 pickup ms for this inbound.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "shortAnswered": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Specifies short answered for this inbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "video": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Specifies video for this inbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            }
                          },
                          "required": [
                            "total",
                            "answered",
                            "missed",
                            "declined",
                            "failed",
                            "ringing",
                            "answerRate",
                            "talkSeconds",
                            "timedAnswered",
                            "timedPickup",
                            "averageTalkSeconds",
                            "medianTalkSeconds",
                            "p95TalkSeconds",
                            "averagePickupMs",
                            "p95PickupMs",
                            "shortAnswered",
                            "video"
                          ],
                          "description": "Structured inbound values for this direction."
                        },
                        "outbound": {
                          "type": "object",
                          "additionalProperties": false,
                          "properties": {
                            "total": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Final total for this order or price summary.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "answered": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Specifies answered for this outbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "missed": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Specifies missed for this outbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "declined": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Specifies declined for this outbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "failed": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Specifies failed for this outbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "ringing": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Specifies ringing for this outbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "answerRate": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "minimum": 0,
                              "maximum": 1,
                              "description": "Specifies answer rate for this outbound.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                            },
                            "talkSeconds": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Specifies talk seconds for this outbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "timedAnswered": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Specifies timed answered for this outbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "timedPickup": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Specifies timed pickup for this outbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "averageTalkSeconds": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "minimum": 0,
                              "description": "Specifies average talk seconds for this outbound.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "medianTalkSeconds": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "minimum": 0,
                              "description": "Specifies median talk seconds for this outbound.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "p95TalkSeconds": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "minimum": 0,
                              "description": "Specifies p95 talk seconds for this outbound.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "averagePickupMs": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "minimum": 0,
                              "description": "Specifies average pickup ms for this outbound.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "p95PickupMs": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "minimum": 0,
                              "description": "Specifies p95 pickup ms for this outbound.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "shortAnswered": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Specifies short answered for this outbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            },
                            "video": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Specifies video for this outbound.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                            }
                          },
                          "required": [
                            "total",
                            "answered",
                            "missed",
                            "declined",
                            "failed",
                            "ringing",
                            "answerRate",
                            "talkSeconds",
                            "timedAnswered",
                            "timedPickup",
                            "averageTalkSeconds",
                            "medianTalkSeconds",
                            "p95TalkSeconds",
                            "averagePickupMs",
                            "p95PickupMs",
                            "shortAnswered",
                            "video"
                          ],
                          "description": "Structured outbound values for this direction."
                        }
                      },
                      "required": [
                        "inbound",
                        "outbound"
                      ],
                      "description": "Structured directions values for this call."
                    },
                    "mediaQuality": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "measuredCalls": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Specifies measured calls for this media quality.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "averageJitterMs": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "minimum": 0,
                          "description": "Specifies average jitter ms for this media quality.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "averageRttMs": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "minimum": 0,
                          "description": "Specifies average rtt ms for this media quality.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "packetsLost": {
                          "type": [
                            "integer",
                            "null"
                          ],
                          "minimum": 0,
                          "description": "Specifies packets lost for this media quality.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        }
                      },
                      "required": [
                        "measuredCalls",
                        "averageJitterMs",
                        "averageRttMs",
                        "packetsLost"
                      ],
                      "description": "Structured media quality values for this call."
                    },
                    "appQuality": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "measuredCalls": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Specifies measured calls for this app quality.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "averageJitterMs": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "minimum": 0,
                          "description": "Specifies average jitter ms for this app quality.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "averageRttMs": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "minimum": 0,
                          "description": "Specifies average rtt ms for this app quality.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "packetLossRate": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "minimum": 0,
                          "maximum": 1,
                          "description": "Specifies packet loss rate for this app quality.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                        },
                        "reconnects": {
                          "type": [
                            "integer",
                            "null"
                          ],
                          "minimum": 0,
                          "description": "Specifies reconnects for this app quality.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        }
                      },
                      "required": [
                        "measuredCalls",
                        "averageJitterMs",
                        "averageRttMs",
                        "packetLossRate",
                        "reconnects"
                      ],
                      "description": "Structured app quality values for this call."
                    },
                    "endReasons": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "code": {
                            "type": "string",
                            "description": "Stable machine-readable code for this result."
                          },
                          "count": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Number of matching resources.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          }
                        },
                        "required": [
                          "code",
                          "count"
                        ]
                      },
                      "description": "End reasons associated with this call."
                    },
                    "appErrors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "code": {
                            "type": "string",
                            "description": "Stable machine-readable code for this result."
                          },
                          "count": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Number of matching resources.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          }
                        },
                        "required": [
                          "code",
                          "count"
                        ]
                      },
                      "description": "App errors associated with this call."
                    },
                    "transports": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "code": {
                            "type": "string",
                            "description": "Stable machine-readable code for this result."
                          },
                          "count": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Number of matching resources.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          }
                        },
                        "required": [
                          "code",
                          "count"
                        ]
                      },
                      "description": "Transports associated with this call."
                    },
                    "multiParticipantCalls": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies multi participant calls for this call.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "followUp": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "eligibleMissed": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Specifies eligible missed for this follow up.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "returnedWithin24h": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Specifies returned within24h for this follow up.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "rate": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "minimum": 0,
                          "maximum": 1,
                          "description": "Specifies rate for this follow up.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                        },
                        "averageDelayMs": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "minimum": 0,
                          "description": "Specifies average delay ms for this follow up.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "pendingWindow": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Specifies pending window for this follow up.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "unknownContact": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Specifies unknown contact for this follow up.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        }
                      },
                      "required": [
                        "eligibleMissed",
                        "returnedWithin24h",
                        "rate",
                        "averageDelayMs",
                        "pendingWindow",
                        "unknownContact"
                      ],
                      "description": "Structured follow up values for this call."
                    }
                  },
                  "required": [
                    "total",
                    "answered",
                    "missed",
                    "declined",
                    "failed",
                    "ringing",
                    "answerRate",
                    "talkSeconds",
                    "timedAnswered",
                    "timedPickup",
                    "averageTalkSeconds",
                    "medianTalkSeconds",
                    "p95TalkSeconds",
                    "averagePickupMs",
                    "p95PickupMs",
                    "shortAnswered",
                    "video",
                    "directions",
                    "mediaQuality",
                    "appQuality",
                    "endReasons",
                    "appErrors",
                    "transports",
                    "multiParticipantCalls",
                    "followUp"
                  ],
                  "description": "Structured calls values for this number."
                },
                "deviceAnalytics": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "detector": {
                      "type": "string",
                      "enum": [
                        "message_id_prefix/v1"
                      ],
                      "description": "Specifies detector for this device analytic.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `message_id_prefix/v1` | Message id prefix/v1. |"
                    },
                    "measured": {
                      "type": "boolean",
                      "description": "True when at least one retained bucket has client-family measurement coverage, including buckets with zero messages."
                    },
                    "complete": {
                      "type": "boolean",
                      "description": "True when measured is true, every retained bucket has device-family coverage and conversation receipt coverage is complete. False when coverage is missing or records, conversations or receipt joins were dropped. Inventory truncation is reported separately."
                    },
                    "observedBuckets": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies observed buckets for this device analytic.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "customerMessages": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Specifies customer messages for this device analytic.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "accountMessages": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "minimum": 0,
                      "description": "Specifies account messages for this device analytic.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "customerPlatforms": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "platform": {
                            "type": "string",
                            "enum": [
                              "web",
                              "android",
                              "iphone",
                              "ipad",
                              "macos",
                              "windows",
                              "wearable",
                              "ar_device",
                              "unknown"
                            ],
                            "description": "Sending client family estimated from a message ID prefix; not verified hardware or operating system.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `web` | Web client. |\n| `android` | Android client. |\n| `iphone` | iPhone client. |\n| `ipad` | iPad client. |\n| `macos` | macOS client. |\n| `windows` | Windows client. |\n| `wearable` | Wearable client. |\n| `ar_device` | AR device client. |\n| `unknown` | No recognized client-family prefix. |"
                          },
                          "messages": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies messages for this customer platform.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "share": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "maximum": 1,
                            "description": "Specifies share for this customer platform.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                          }
                        },
                        "required": [
                          "platform",
                          "messages",
                          "share"
                        ]
                      },
                      "description": "Customer platforms associated with this device analytic."
                    },
                    "accountPlatforms": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "platform": {
                            "type": "string",
                            "enum": [
                              "web",
                              "android",
                              "iphone",
                              "ipad",
                              "macos",
                              "windows",
                              "wearable",
                              "ar_device",
                              "unknown"
                            ],
                            "description": "Sending client family estimated from a message ID prefix; not verified hardware or operating system.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `web` | Web client. |\n| `android` | Android client. |\n| `iphone` | iPhone client. |\n| `ipad` | iPad client. |\n| `macos` | macOS client. |\n| `windows` | Windows client. |\n| `wearable` | Wearable client. |\n| `ar_device` | AR device client. |\n| `unknown` | No recognized client-family prefix. |"
                          },
                          "messages": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies messages for this account platform.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "share": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "maximum": 1,
                            "description": "Specifies share for this account platform.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                          }
                        },
                        "required": [
                          "platform",
                          "messages",
                          "share"
                        ]
                      },
                      "description": "Account platforms associated with this device analytic."
                    },
                    "inventory": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "listObserved": {
                          "type": "boolean",
                          "description": "True after a full device list for this number was observed."
                        },
                        "listCurrent": {
                          "type": "boolean",
                          "description": "True when a full list was observed and no later list-change signal invalidated it. Membership and device count are unknown until another full list after a change."
                        },
                        "observedAt": {
                          "type": [
                            "integer",
                            "null"
                          ],
                          "description": "Unix milliseconds.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
                        },
                        "deviceCount": {
                          "type": [
                            "integer",
                            "null"
                          ],
                          "minimum": 0,
                          "description": "Number of devices.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                        },
                        "truncated": {
                          "type": "boolean",
                          "description": "True when the bounded inventory omitted devices. At most 25 device rows are returned; a current full-list device count can be larger."
                        },
                        "devices": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                              "deviceIndex": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 999,
                                "description": "Specifies device index for this device.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `999` (inclusive) |"
                              },
                              "estimatedPlatform": {
                                "type": "string",
                                "enum": [
                                  "web",
                                  "android",
                                  "iphone",
                                  "ipad",
                                  "macos",
                                  "windows",
                                  "wearable",
                                  "ar_device",
                                  "unknown"
                                ],
                                "description": "Sending client family estimated from a message ID prefix; not verified hardware or operating system.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `web` | Web client. |\n| `android` | Android client. |\n| `iphone` | iPhone client. |\n| `ipad` | iPad client. |\n| `macos` | macOS client. |\n| `windows` | Windows client. |\n| `wearable` | Wearable client. |\n| `ar_device` | AR device client. |\n| `unknown` | No recognized client-family prefix. |"
                              },
                              "reportedClass": {
                                "type": "string",
                                "enum": [
                                  "phone",
                                  "desktop_app",
                                  "browser",
                                  "business_api",
                                  "unknown"
                                ],
                                "description": "Specifies reported class for this device.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `phone` | Phone. |\n| `desktop_app` | Desktop app. |\n| `browser` | Browser. |\n| `business_api` | Business API. |\n| `unknown` | No recognized reported device class. |"
                              },
                              "lastActiveAt": {
                                "type": [
                                  "integer",
                                  "null"
                                ],
                                "description": "Unix milliseconds.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
                              },
                              "listed": {
                                "type": [
                                  "boolean",
                                  "null"
                                ],
                                "description": "Whether this device index belongs to the latest observed full list. Null when that list is no longer current.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `boolean` |\n| Alternative 2 | `null` |"
                              }
                            },
                            "required": [
                              "deviceIndex",
                              "estimatedPlatform",
                              "reportedClass",
                              "lastActiveAt",
                              "listed"
                            ]
                          },
                          "maxItems": 25,
                          "description": "Devices associated with this inventory.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `25` items |"
                        }
                      },
                      "required": [
                        "listObserved",
                        "listCurrent",
                        "observedAt",
                        "deviceCount",
                        "truncated",
                        "devices"
                      ],
                      "description": "Structured inventory values for this device analytic.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `listObserved`, `listCurrent`, `observedAt`, `deviceCount`, `truncated`, `devices` |\n| Alternative 2 | `null` |"
                    }
                  },
                  "required": [
                    "detector",
                    "measured",
                    "complete",
                    "observedBuckets",
                    "customerMessages",
                    "accountMessages",
                    "customerPlatforms",
                    "accountPlatforms",
                    "inventory"
                  ],
                  "description": "Observed message client-family distributions and a bounded inventory of this number's own devices. The combined summary has null inventory."
                },
                "conversationBreakdown": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "measured": {
                      "type": "boolean",
                      "description": "True when at least one retained bucket includes joint conversation categories."
                    },
                    "complete": {
                      "type": "boolean",
                      "description": "True when measured is true, every retained bucket has joint conversation coverage, no conversation, record or receipt-join coverage was lost and the returned groups are not truncated. Rates and averages are null when false."
                    },
                    "observedBuckets": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies observed buckets for this conversation breakdown.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "droppedConversations": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies dropped conversations for this conversation breakdown.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "truncated": {
                      "type": "boolean",
                      "description": "True when the requested scope exceeded 4096 number/time/category groups. The largest groups are retained; rates and averages are null."
                    },
                    "buckets": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "ts": {
                            "type": "integer",
                            "description": "Unix milliseconds."
                          },
                          "complete": {
                            "type": "boolean",
                            "description": "True when this UTC time bucket has joint category coverage and no conversations or records were dropped. A summary bucket also requires every scoped number to have a bucket."
                          }
                        },
                        "required": [
                          "ts",
                          "complete"
                        ]
                      },
                      "description": "Buckets associated with this conversation breakdown."
                    },
                    "rows": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "ts": {
                            "type": "integer",
                            "description": "Unix milliseconds."
                          },
                          "messageType": {
                            "type": "string",
                            "enum": [
                              "text",
                              "image",
                              "video",
                              "audio",
                              "document",
                              "sticker",
                              "interactive",
                              "template",
                              "other"
                            ],
                            "description": "Category assigned to message.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `text` | Text. |\n| `image` | Image. |\n| `video` | Video. |\n| `audio` | Audio. |\n| `document` | Document. |\n| `sticker` | Sticker. |\n| `interactive` | Interactive. |\n| `template` | Template. |\n| `other` | Other. |"
                          },
                          "textBand": {
                            "type": "string",
                            "enum": [
                              "none",
                              "short",
                              "medium",
                              "long",
                              "very_long",
                              "unknown"
                            ],
                            "description": "Specifies text band for this row.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `short` | Short. |\n| `medium` | Medium. |\n| `long` | Long. |\n| `very_long` | Very long. |\n| `unknown` | Unknown. |"
                          },
                          "origin": {
                            "type": "string",
                            "enum": [
                              "api",
                              "campaign",
                              "other"
                            ],
                            "description": "Specifies origin for this row.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `api` | API send. |\n| `campaign` | Campaign send. |\n| `other` | Other or unclassified send source. |"
                          },
                          "recipientCountry": {
                            "type": "string",
                            "pattern": "^(unknown|[A-Z]{2})$",
                            "description": "Numbering country inferred from a full phone number or valid BSUID prefix; Unknown for missing historical metadata. Not current location.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^(unknown\\|[A-Z]{2})$` |"
                          },
                          "recipientDeviceCount": {
                            "type": "string",
                            "enum": [
                              "primary_only",
                              "one_linked",
                              "two_plus_linked",
                              "unknown"
                            ],
                            "description": "Observed linked-device range; device zero is the primary and is excluded from linked counts.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `primary_only` | Primary only. |\n| `one_linked` | One linked. |\n| `two_plus_linked` | Two plus linked. |\n| `unknown` | Unknown. |"
                          },
                          "callingCode": {
                            "type": "string",
                            "pattern": "^(unknown|[1-9][0-9]{0,2})$",
                            "description": "Machine-readable calling code for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^(unknown\\|[1-9][0-9]{0,2})$` |"
                          },
                          "customerDevices": {
                            "type": "string",
                            "enum": [
                              "single",
                              "multiple",
                              "unknown"
                            ],
                            "description": "Specifies customer devices for this row.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `single` | Single. |\n| `multiple` | Multiple. |\n| `unknown` | Unknown. |"
                          },
                          "completedConversations": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies completed conversations for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "deliveredConversations": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies delivered conversations for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "readConversations": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies read conversations for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "repliedConversations": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies replied conversations for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "replyLatencySumMs": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies reply latency sum ms for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "readRate": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "maximum": 1,
                            "description": "Specifies read rate for this row.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                          },
                          "replyRate": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "maximum": 1,
                            "description": "Specifies reply rate for this row.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                          },
                          "averageCustomerReplyMs": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "description": "Specifies average customer reply ms for this row.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          }
                        },
                        "required": [
                          "ts",
                          "messageType",
                          "textBand",
                          "origin",
                          "recipientCountry",
                          "recipientDeviceCount",
                          "callingCode",
                          "customerDevices",
                          "completedConversations",
                          "deliveredConversations",
                          "readConversations",
                          "repliedConversations",
                          "replyLatencySumMs",
                          "readRate",
                          "replyRate",
                          "averageCustomerReplyMs"
                        ]
                      },
                      "maxItems": 4096,
                      "description": "Rows associated with this conversation breakdown.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `4096` items |"
                    }
                  },
                  "required": [
                    "measured",
                    "complete",
                    "observedBuckets",
                    "droppedConversations",
                    "truncated",
                    "buckets",
                    "rows"
                  ],
                  "description": "Completed 24-hour conversation cohorts grouped jointly by completion bucket, first outgoing message metadata, calling code and observed device-count class."
                },
                "recipientActivity": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "measured": {
                      "type": "boolean",
                      "description": "Whether measured."
                    },
                    "complete": {
                      "type": "boolean",
                      "description": "Whether complete."
                    },
                    "observedBuckets": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies observed buckets for this recipient activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "droppedSignals": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Specifies dropped signals for this recipient activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                    },
                    "truncated": {
                      "type": "boolean",
                      "description": "Whether truncated."
                    },
                    "rows": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "ts": {
                            "type": "integer",
                            "description": "Unix milliseconds."
                          },
                          "recipientCountry": {
                            "type": "string",
                            "pattern": "^(unknown|[A-Z]{2})$",
                            "description": "Specifies recipient country for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^(unknown\\|[A-Z]{2})$` |"
                          },
                          "recipientDeviceCount": {
                            "type": "string",
                            "enum": [
                              "primary_only",
                              "one_linked",
                              "two_plus_linked",
                              "unknown"
                            ],
                            "description": "Number of recipient devices.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `primary_only` | Primary only. |\n| `one_linked` | One linked. |\n| `two_plus_linked` | Two plus linked. |\n| `unknown` | Unknown. |"
                          },
                          "deviceSource": {
                            "type": "string",
                            "enum": [
                              "primary",
                              "linked",
                              "unknown"
                            ],
                            "description": "Specifies device source for this row.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `primary` | Primary. |\n| `linked` | Linked. |\n| `unknown` | Unknown. |"
                          },
                          "incomingMessages": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies incoming messages for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "deliveryReceipts": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies delivery receipts for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "readReceipts": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies read receipts for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "onlineSignals": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies online signals for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "offlineSignals": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies offline signals for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "typingSignals": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies typing signals for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "lastSignalAt": {
                            "type": "integer",
                            "description": "Unix milliseconds."
                          },
                          "quietGaps": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies quiet gaps for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "quietGapMs": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Specifies quiet gap ms for this row.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          },
                          "averageQuietGapMs": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0,
                            "description": "Specifies average quiet gap ms for this row.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                          }
                        },
                        "required": [
                          "ts",
                          "recipientCountry",
                          "recipientDeviceCount",
                          "deviceSource",
                          "incomingMessages",
                          "deliveryReceipts",
                          "readReceipts",
                          "onlineSignals",
                          "offlineSignals",
                          "typingSignals",
                          "lastSignalAt",
                          "quietGaps",
                          "quietGapMs",
                          "averageQuietGapMs"
                        ]
                      },
                      "maxItems": 4096,
                      "description": "Rows associated with this recipient activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `4096` items |"
                    }
                  },
                  "required": [
                    "measured",
                    "complete",
                    "observedBuckets",
                    "droppedSignals",
                    "truncated",
                    "rows"
                  ],
                  "description": "Hourly aggregate recipient observations, grouped jointly by numbering country, observed linked-device count and sender-device class. Incoming messages and matched delivery/read receipts are deduplicated by native message and device in bounded memory. Presence is user-level and uses Unknown device source. Quiet gaps of at least 15 minutes are completed gaps between observed signals on the same device, never verified offline periods. No recipient identity, native message ID or recipient device index is retained. Coverage is explicit; older retained buckets are unmeasured. Message telemetry remains Linked Devices only; Official API message activity is not measured."
                }
              },
              "required": [
                "sessionId",
                "projectId",
                "name",
                "backend",
                "status",
                "measured",
                "observedHours",
                "lastObservedAt",
                "outgoingMessages",
                "incomingMessages",
                "sendAttempts",
                "sendFailures",
                "sendFailureRate",
                "businessReplies",
                "averageBusinessResponseMs",
                "onlineMs",
                "disconnects",
                "connectFailures",
                "streamErrors",
                "keepaliveTimeouts",
                "engagement",
                "messageAnalysis",
                "customerActivity",
                "accountActivity",
                "responseQueue",
                "projectName",
                "calls",
                "deviceAnalytics",
                "conversationBreakdown"
              ]
            },
            "description": "Numbers associated with this platform whats app analytic."
          },
          "series": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "ts": {
                  "type": "integer",
                  "description": "Unix milliseconds."
                },
                "outgoingMessages": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies outgoing messages for this sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "incomingMessages": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies incoming messages for this sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "sendFailures": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies send failures for this sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "businessReplies": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies business replies for this sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "averageBusinessResponseMs": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "minimum": 0,
                  "description": "Specifies average business response ms for this sery.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "onlineMs": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies online ms for this sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "disconnects": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies disconnects for this sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "sessionId": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                },
                "customerOnlineSignals": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies customer online signals for this sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "customerTypingSignals": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies customer typing signals for this sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "primaryPhoneMessages": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies primary phone messages for this sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "otherDeviceMessages": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies other device messages for this sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "primaryPhoneReplies": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies primary phone replies for this sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "phoneActivePeriods": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies phone active periods for this sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "completedPhoneActivityPeriods": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies completed phone activity periods for this sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "phoneActivityMs": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies phone activity ms for this sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "phoneQuietGaps": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies phone quiet gaps for this sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "phoneQuietMs": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies phone quiet ms for this sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                }
              },
              "required": [
                "ts",
                "outgoingMessages",
                "incomingMessages",
                "sendFailures",
                "businessReplies",
                "averageBusinessResponseMs",
                "onlineMs",
                "disconnects",
                "sessionId",
                "customerOnlineSignals",
                "customerTypingSignals",
                "primaryPhoneMessages",
                "otherDeviceMessages",
                "primaryPhoneReplies",
                "phoneActivePeriods",
                "completedPhoneActivityPeriods",
                "phoneActivityMs",
                "phoneQuietGaps",
                "phoneQuietMs"
              ]
            },
            "description": "Series associated with this platform whats app analytic."
          },
          "callSeries": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "total": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Final total for this order or price summary.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "answered": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies answered for this call sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "missed": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies missed for this call sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "declined": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies declined for this call sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "failed": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies failed for this call sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "ringing": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies ringing for this call sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "answerRate": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "minimum": 0,
                  "maximum": 1,
                  "description": "Specifies answer rate for this call sery.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
                },
                "talkSeconds": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies talk seconds for this call sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "timedAnswered": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies timed answered for this call sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "timedPickup": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies timed pickup for this call sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "averageTalkSeconds": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "minimum": 0,
                  "description": "Specifies average talk seconds for this call sery.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "medianTalkSeconds": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "minimum": 0,
                  "description": "Specifies median talk seconds for this call sery.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "p95TalkSeconds": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "minimum": 0,
                  "description": "Specifies p95 talk seconds for this call sery.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "averagePickupMs": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "minimum": 0,
                  "description": "Specifies average pickup ms for this call sery.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "p95PickupMs": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "minimum": 0,
                  "description": "Specifies p95 pickup ms for this call sery.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "shortAnswered": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies short answered for this call sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "video": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Specifies video for this call sery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "sessionId": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                },
                "ts": {
                  "type": "integer",
                  "description": "Unix milliseconds."
                }
              },
              "required": [
                "total",
                "answered",
                "missed",
                "declined",
                "failed",
                "ringing",
                "answerRate",
                "talkSeconds",
                "timedAnswered",
                "timedPickup",
                "averageTalkSeconds",
                "medianTalkSeconds",
                "p95TalkSeconds",
                "averagePickupMs",
                "p95PickupMs",
                "shortAnswered",
                "video",
                "sessionId",
                "ts"
              ]
            },
            "description": "Call series associated with this platform whats app analytic."
          }
        },
        "required": [
          "enabled",
          "period",
          "requestVitals",
          "summary",
          "numbers",
          "series",
          "callSeries"
        ]
      },
      "platform__DataEnvelope": {
        "type": "object",
        "properties": {
          "data": {
            "description": "Operation result."
          }
        },
        "required": [
          "data"
        ]
      },
      "platform__ErrorEnvelope": {
        "type": "object",
        "required": [
          "error",
          "data",
          "docs"
        ],
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "type",
              "code",
              "message",
              "param",
              "request_id"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "invalid_request_error",
                  "authentication_error",
                  "permission_error",
                  "conflict_error",
                  "rate_limit_error",
                  "api_error",
                  "upstream_error"
                ],
                "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `invalid_request_error` | Invalid request error. |\n| `authentication_error` | Authentication error. |\n| `permission_error` | Permission error. |\n| `conflict_error` | Conflict error. |\n| `rate_limit_error` | Rate limit error. |\n| `api_error` | Api error. |\n| `upstream_error` | Upstream error. |"
              },
              "code": {
                "type": "string",
                "description": "Stable failure code. Use this value for programmatic handling."
              },
              "message": {
                "type": "string",
                "description": "Safe explanation of the failure."
              },
              "param": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Invalid request field, or null when no field applies.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
              },
              "request_id": {
                "type": "string",
                "description": "Matches the X-Request-Id response header. Include it when you contact support."
              },
              "request_log_url": {
                "type": "string",
                "format": "uri",
                "description": "Console page that shows this request. Returned only to organization and project credentials whose request was logged.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
              }
            },
            "description": "Error details returned when the operation fails."
          },
          "data": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              null
            ],
            "description": "Always null for a failed request.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "docs": {
            "type": "string",
            "format": "uri",
            "description": "Documentation link to this failure code.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
          }
        }
      },
      "platform__ProjectId": {
        "type": "string",
        "format": "uuid",
        "description": "Project UUID. Optional where an operation can infer or search team scope; required where the operation creates a project-owned resource."
      },
      "platform__CustomerId": {
        "type": "string",
        "format": "uuid",
        "description": "Project-owned Customer UUID."
      },
      "platform__Customer": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__CustomerId"
              }
            ],
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "orgId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the org.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__ProjectId"
              }
            ],
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 120,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: At most `120` characters |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `120` characters |"
          },
          "externalCustomerId": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 200,
            "description": "Identifier for the external customer.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: At most `200` characters |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `200` characters |"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "archiving",
              "archived"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `active` | Active. |\n| `archiving` | Archiving. |\n| `archived` | Archived. |"
          },
          "isDefault": {
            "type": "boolean",
            "description": "Whether default."
          },
          "archivedAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Timestamp for archived at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Format: `int64` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "createdAt": {
            "type": "integer",
            "format": "int64",
            "description": "Unix timestamp in milliseconds when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "updatedAt": {
            "type": "integer",
            "format": "int64",
            "description": "Unix timestamp in milliseconds when this resource was last updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          }
        },
        "required": [
          "id",
          "orgId",
          "projectId",
          "name",
          "externalCustomerId",
          "status",
          "isDefault",
          "archivedAt",
          "createdAt",
          "updatedAt"
        ]
      },
      "platform__CustomerSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__CustomerId"
              }
            ],
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "orgId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the org.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__ProjectId"
              }
            ],
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 120,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: At most `120` characters |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `120` characters |"
          },
          "externalCustomerId": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 200,
            "description": "Identifier for the external customer.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: At most `200` characters |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `200` characters |"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "archiving",
              "archived"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `active` | Active. |\n| `archiving` | Archiving. |\n| `archived` | Archived. |"
          },
          "isDefault": {
            "type": "boolean",
            "description": "Whether default."
          },
          "archivedAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Timestamp for archived at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Format: `int64` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "numberCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of numbers.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "connectedNumberCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of connected numbers.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "activePairingLinkState": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies active pairing link state for this platform customer summary.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "lastActivityAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Timestamp for last activity at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Format: `int64` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "needsAttention": {
            "type": "boolean",
            "description": "Whether needs attention."
          },
          "createdAt": {
            "type": "integer",
            "format": "int64",
            "description": "Unix timestamp in milliseconds when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "updatedAt": {
            "type": "integer",
            "format": "int64",
            "description": "Unix timestamp in milliseconds when this resource was last updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          }
        },
        "required": [
          "id",
          "orgId",
          "projectId",
          "name",
          "externalCustomerId",
          "status",
          "isDefault",
          "archivedAt",
          "numberCount",
          "connectedNumberCount",
          "activePairingLinkState",
          "lastActivityAt",
          "needsAttention",
          "createdAt",
          "updatedAt"
        ]
      },
      "platform__CustomersStatus": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          },
          "enabledAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Timestamp for enabled at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Format: `int64` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "enabledBy": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies enabled by for this platform customers status.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "defaultCustomer": {
            "anyOf": [
              {
                "type": "object",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__Customer"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies default customer for this platform customers status.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `status`: `active` or `archiving` or `archived`; Required fields: `id`, `orgId`, `projectId`, `name`, `externalCustomerId`, `status`, `isDefault`, `archivedAt`, `createdAt`, `updatedAt` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "enabled",
          "enabledAt",
          "enabledBy",
          "defaultCustomer"
        ]
      },
      "platform__CustomersEnablement": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          },
          "enabledAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Timestamp for enabled at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Format: `int64` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "enabledBy": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies enabled by for this platform customers enablement.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "defaultCustomer": {
            "anyOf": [
              {
                "type": "object",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__Customer"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies default customer for this platform customers enablement.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `status`: `active` or `archiving` or `archived`; Required fields: `id`, `orgId`, `projectId`, `name`, `externalCustomerId`, `status`, `isDefault`, `archivedAt`, `createdAt`, `updatedAt` |\n| Alternative 2 | `null` |"
          },
          "migratedNumberCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of migrated numbers.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "enabled",
          "enabledAt",
          "enabledBy",
          "defaultCustomer",
          "migratedNumberCount"
        ]
      },
      "platform__CustomerProjectRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__ProjectId"
              }
            ],
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        }
      },
      "platform__CreateCustomerRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__ProjectId"
              }
            ],
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "minLength": 1,
            "maxLength": 120,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: `1` through `120` characters |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `120` characters |"
          },
          "externalCustomerId": {
            "type": [
              "string",
              "null"
            ],
            "minLength": 1,
            "maxLength": 200,
            "description": "Identifier for the external customer.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: `1` through `200` characters |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `200` characters |"
          }
        }
      },
      "platform__UpdateCustomerRequest": {
        "type": "object",
        "additionalProperties": false,
        "minProperties": 1,
        "properties": {
          "projectId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__ProjectId"
              }
            ],
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "minLength": 1,
            "maxLength": 120,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: `1` through `120` characters |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `120` characters |"
          },
          "externalCustomerId": {
            "type": [
              "string",
              "null"
            ],
            "minLength": 1,
            "maxLength": 200,
            "description": "Identifier for the external customer.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: `1` through `200` characters |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `200` characters |"
          }
        }
      },
      "platform__CustomerNumber": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "customerId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__CustomerId"
              }
            ],
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "sessionId": {
            "type": "string",
            "description": "Identifier of the connected Polymorfa session."
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "phoneMasked": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies phone masked for this platform customer number.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "status": {
            "type": "string",
            "description": "Current status of this resource or operation."
          },
          "backend": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies backend for this platform customer number.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "createdAt": {
            "type": "integer",
            "format": "int64",
            "description": "Unix timestamp in milliseconds when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          }
        },
        "required": [
          "id",
          "customerId",
          "sessionId",
          "name",
          "phoneMasked",
          "status",
          "backend",
          "createdAt"
        ]
      },
      "platform__CustomerEvent": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "action": {
            "type": "string",
            "pattern": "^customer(?:\\.[a-z0-9_]+){1,3}$",
            "maxLength": 128,
            "description": "Action represented by this platform customer event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `128` characters |\n| Pattern | `^customer(?:\\.[a-z0-9_]+){1,3}$` |"
          },
          "fromStatus": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies from status for this platform customer event.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "toStatus": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies to status for this platform customer event.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "sessionId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "pairingLinkId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Identifier for the pairing link.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "fields": {
                "type": "array",
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "enum": [
                    "name",
                    "phone",
                    "externalCustomerId"
                  ]
                },
                "description": "Fields associated with this metadata.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `name` | Name. |\n| `phone` | Phone. |\n| `externalCustomerId` | External customer id. |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Duplicates | Not accepted; every array item must be unique |"
              }
            },
            "description": "Structured metadata values for this platform customer event."
          },
          "occurredAt": {
            "type": "integer",
            "format": "int64",
            "description": "Timestamp for occurred at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          }
        },
        "required": [
          "id",
          "action",
          "fromStatus",
          "toStatus",
          "sessionId",
          "pairingLinkId",
          "metadata",
          "occurredAt"
        ]
      },
      "platform__CustomerPairingLink": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "orgId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the org.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__ProjectId"
              }
            ],
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "customerId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__CustomerId"
              }
            ],
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "expectedPhoneMasked": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies expected phone masked for this platform customer pairing link.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "methods": {
            "type": "array",
            "minItems": 1,
            "maxItems": 2,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "enum": [
                "qr",
                "phone"
              ]
            },
            "description": "Connection methods enabled for the widget.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `qr` | Qr. |\n| `phone` | Phone. |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `2` items |\n| Duplicates | Not accepted; every array item must be unique |"
          },
          "locale": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "en",
              "pt-BR",
              null
            ],
            "description": "Specifies locale for this platform customer pairing link.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `en` | En. |\n| `pt-BR` | Pt br. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `en` or `pt-BR` |\n| Alternative 2 | `null` |"
          },
          "theme": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "light",
              "dark",
              "system",
              null
            ],
            "description": "Visual theme used by the widget.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `light` | Light. |\n| `dark` | Dark. |\n| `system` | System. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `light` or `dark` or `system` |\n| Alternative 2 | `null` |"
          },
          "expiresAt": {
            "type": "integer",
            "format": "int64",
            "description": "Unix timestamp in milliseconds when this resource expires.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "opened",
              "connecting",
              "connected",
              "failed",
              "expired",
              "revoked"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `active` | Active. |\n| `opened` | Opened. |\n| `connecting` | Connecting. |\n| `connected` | Connected. |\n| `failed` | Failed. |\n| `expired` | Expired. |\n| `revoked` | Revoked. |"
          },
          "attemptCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of attempts.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "maxAttempts": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Specifies max attempts for this platform customer pairing link.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `20` (inclusive) |"
          },
          "pendingSessionId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Identifier for the pending session.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "createdBy": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies created by for this platform customer pairing link.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "reservedAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Timestamp for reserved at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Format: `int64` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "openedAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Timestamp for opened at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Format: `int64` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "connectingAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Timestamp for connecting at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Format: `int64` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "connectedAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Timestamp for connected at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Format: `int64` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "failedAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Timestamp for failed at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Format: `int64` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "expiredAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Timestamp for expired at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Format: `int64` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "revokedAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Timestamp for revoked at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Format: `int64` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "lastErrorCode": {
            "type": [
              "string",
              "null"
            ],
            "description": "Machine-readable last error code for this platform customer pairing link.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "failedExchangeCount": {
            "type": "integer",
            "minimum": 0,
            "maximum": 5,
            "description": "Number of failed exchanges.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `5` (inclusive) |"
          },
          "phoneMismatchCount": {
            "type": "integer",
            "minimum": 0,
            "maximum": 3,
            "description": "Number of phone mismatches.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `3` (inclusive) |"
          },
          "createdAt": {
            "type": "integer",
            "format": "int64",
            "description": "Unix timestamp in milliseconds when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "updatedAt": {
            "type": "integer",
            "format": "int64",
            "description": "Unix timestamp in milliseconds when this resource was last updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          }
        },
        "required": [
          "id",
          "orgId",
          "projectId",
          "customerId",
          "expectedPhoneMasked",
          "methods",
          "locale",
          "theme",
          "expiresAt",
          "status",
          "attemptCount",
          "maxAttempts",
          "pendingSessionId",
          "createdBy",
          "reservedAt",
          "openedAt",
          "connectingAt",
          "connectedAt",
          "failedAt",
          "expiredAt",
          "revokedAt",
          "lastErrorCode",
          "failedExchangeCount",
          "phoneMismatchCount",
          "createdAt",
          "updatedAt"
        ]
      },
      "platform__CreatedCustomerPairingLink": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "orgId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the org.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__ProjectId"
              }
            ],
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "customerId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__CustomerId"
              }
            ],
            "description": "Identifier for the customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "expectedPhoneMasked": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies expected phone masked for this platform created customer pairing link.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "methods": {
            "type": "array",
            "minItems": 1,
            "maxItems": 2,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "enum": [
                "qr",
                "phone"
              ]
            },
            "description": "Connection methods enabled for the widget.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `qr` | Qr. |\n| `phone` | Phone. |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `2` items |\n| Duplicates | Not accepted; every array item must be unique |"
          },
          "locale": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "en",
              "pt-BR",
              null
            ],
            "description": "Specifies locale for this platform created customer pairing link.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `en` | En. |\n| `pt-BR` | Pt br. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `en` or `pt-BR` |\n| Alternative 2 | `null` |"
          },
          "theme": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "light",
              "dark",
              "system",
              null
            ],
            "description": "Visual theme used by the widget.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `light` | Light. |\n| `dark` | Dark. |\n| `system` | System. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `light` or `dark` or `system` |\n| Alternative 2 | `null` |"
          },
          "expiresAt": {
            "type": "integer",
            "format": "int64",
            "description": "Unix timestamp in milliseconds when this resource expires.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "opened",
              "connecting",
              "connected",
              "failed",
              "expired",
              "revoked"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `active` | Active. |\n| `opened` | Opened. |\n| `connecting` | Connecting. |\n| `connected` | Connected. |\n| `failed` | Failed. |\n| `expired` | Expired. |\n| `revoked` | Revoked. |"
          },
          "attemptCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of attempts.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "maxAttempts": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Specifies max attempts for this platform created customer pairing link.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `20` (inclusive) |"
          },
          "pendingSessionId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Identifier for the pending session.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "createdBy": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies created by for this platform created customer pairing link.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "reservedAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Timestamp for reserved at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Format: `int64` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "openedAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Timestamp for opened at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Format: `int64` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "connectingAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Timestamp for connecting at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Format: `int64` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "connectedAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Timestamp for connected at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Format: `int64` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "failedAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Timestamp for failed at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Format: `int64` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "expiredAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Timestamp for expired at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Format: `int64` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "revokedAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Timestamp for revoked at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Format: `int64` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "lastErrorCode": {
            "type": [
              "string",
              "null"
            ],
            "description": "Machine-readable last error code for this platform created customer pairing link.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "failedExchangeCount": {
            "type": "integer",
            "minimum": 0,
            "maximum": 5,
            "description": "Number of failed exchanges.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `5` (inclusive) |"
          },
          "phoneMismatchCount": {
            "type": "integer",
            "minimum": 0,
            "maximum": 3,
            "description": "Number of phone mismatches.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `3` (inclusive) |"
          },
          "createdAt": {
            "type": "integer",
            "format": "int64",
            "description": "Unix timestamp in milliseconds when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "updatedAt": {
            "type": "integer",
            "format": "int64",
            "description": "Unix timestamp in milliseconds when this resource was last updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "Returned once; null on an idempotent replay.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uri` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
          }
        },
        "required": [
          "id",
          "orgId",
          "projectId",
          "customerId",
          "expectedPhoneMasked",
          "methods",
          "locale",
          "theme",
          "expiresAt",
          "status",
          "attemptCount",
          "maxAttempts",
          "pendingSessionId",
          "createdBy",
          "reservedAt",
          "openedAt",
          "connectingAt",
          "connectedAt",
          "failedAt",
          "expiredAt",
          "revokedAt",
          "lastErrorCode",
          "failedExchangeCount",
          "phoneMismatchCount",
          "createdAt",
          "updatedAt",
          "url"
        ]
      },
      "platform__CreateCustomerPairingLinkRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__ProjectId"
              }
            ],
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "expectedPhone": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional expected phone, normalized to E.164. Creation attempts WhatsApp registration resolution; confirmed nonregistration is rejected, while an inconclusive result remains unknown.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "methods": {
            "type": "array",
            "minItems": 1,
            "maxItems": 2,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "enum": [
                "qr",
                "phone"
              ]
            },
            "description": "Connection methods enabled for the widget.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `qr` | Qr. |\n| `phone` | Phone. |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `2` items |\n| Duplicates | Not accepted; every array item must be unique |"
          },
          "expiresInSeconds": {
            "type": "integer",
            "minimum": 900,
            "maximum": 604800,
            "default": 86400,
            "description": "Specifies expires in seconds for this platform create customer pairing link request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `900` through `604800` (inclusive) |"
          }
        }
      },
      "platform__TransferCustomerNumberRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__ProjectId"
              }
            ],
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "sourceCustomerId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__CustomerId"
              }
            ],
            "description": "Identifier for the source customer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "confirm": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether confirm.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          }
        },
        "required": [
          "projectId",
          "sourceCustomerId",
          "confirm"
        ]
      },
      "platform__TemplateId": {
        "type": "string",
        "format": "uuid",
        "description": "Message-template draft UUID."
      },
      "platform__SessionConfigurationView": {
        "type": "object",
        "properties": {
          "requestedHistory": {
            "type": "object",
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "metadata_only",
                  "deliver"
                ],
                "description": "Operating mode selected for this feature.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `metadata_only` | Metadata only. |\n| `deliver` | Deliver. |"
              },
              "requestFull": {
                "type": "boolean",
                "description": "Whether request full."
              }
            },
            "required": [
              "mode",
              "requestFull"
            ],
            "additionalProperties": false,
            "description": "Structured requested history values for this platform session configuration view."
          },
          "historyConsent": {
            "type": "string",
            "enum": [
              "pending",
              "accepted",
              "declined"
            ],
            "description": "Specifies history consent for this platform session configuration view.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending` | Pending. |\n| `accepted` | Accepted. |\n| `declined` | Declined. |"
          },
          "effective": {
            "type": "object",
            "properties": {
              "observation": {
                "type": "object",
                "properties": {
                  "presenceMode": {
                    "type": "string",
                    "enum": [
                      "off",
                      "events",
                      "cache"
                    ],
                    "description": "Behavior selected for presence.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
                  },
                  "typingMode": {
                    "type": "string",
                    "enum": [
                      "off",
                      "events",
                      "cache"
                    ],
                    "description": "Behavior selected for typing.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
                  },
                  "labelMode": {
                    "type": "string",
                    "enum": [
                      "off",
                      "events",
                      "cache",
                      "project"
                    ],
                    "description": "Behavior selected for label.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |\n| `project` | Project. |"
                  },
                  "quickReplyMode": {
                    "type": "string",
                    "enum": [
                      "off",
                      "events",
                      "cache"
                    ],
                    "description": "Behavior selected for quick reply.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
                  }
                },
                "required": [
                  "presenceMode",
                  "typingMode",
                  "labelMode",
                  "quickReplyMode"
                ],
                "additionalProperties": false,
                "description": "Structured observation values for this effective."
              },
              "historySync": {
                "type": "object",
                "properties": {
                  "mode": {
                    "type": "string",
                    "enum": [
                      "metadata_only",
                      "deliver"
                    ],
                    "description": "Operating mode selected for this feature.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `metadata_only` | Metadata only. |\n| `deliver` | Deliver. |"
                  },
                  "requestFull": {
                    "type": "boolean",
                    "description": "Whether request full."
                  }
                },
                "required": [
                  "mode",
                  "requestFull"
                ],
                "additionalProperties": false,
                "description": "History synchronization behavior for newly connected sessions."
              },
              "hms": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "enabled": {
                        "type": "boolean",
                        "enum": [
                          false
                        ],
                        "description": "Whether this feature is enabled.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `false` | False. |"
                      }
                    },
                    "required": [
                      "enabled"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "enabled": {
                        "type": "boolean",
                        "enum": [
                          true
                        ],
                        "description": "Whether this feature is enabled.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
                      },
                      "region": {
                        "type": "string",
                        "pattern": "^[a-z0-9][a-z0-9-]{0,31}$",
                        "description": "Specifies region for this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z0-9][a-z0-9-]{0,31}$` |"
                      },
                      "policy": {
                        "type": "string",
                        "enum": [
                          "short",
                          "standard",
                          "extended",
                          "compliance",
                          "enterprise_archive"
                        ],
                        "description": "Specifies policy for this any of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `short` | Short. |\n| `standard` | Standard. |\n| `extended` | Extended. |\n| `compliance` | Compliance. |\n| `enterprise_archive` | Enterprise archive. |"
                      },
                      "retentionDays": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 2555,
                        "description": "Specifies retention days for this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `2555` (inclusive) |"
                      },
                      "policyVersion": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 128,
                        "description": "Specifies policy version for this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
                      },
                      "legalHold": {
                        "type": "boolean",
                        "description": "Whether legal hold."
                      }
                    },
                    "required": [
                      "enabled",
                      "region",
                      "policy"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "Specifies hms for this effective.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `enabled`: `false`; Required fields: `enabled` |\n| Alternative 2 | Type: `object`; Field `enabled`: `true`; Field `policy`: `short` or `standard` or `extended` or `compliance` or `enterprise_archive`; Required fields: `enabled`, `region`, `policy` |"
              }
            },
            "required": [
              "observation",
              "historySync",
              "hms"
            ],
            "additionalProperties": false,
            "description": "Structured effective values for this platform session configuration view."
          },
          "overrides": {
            "type": "object",
            "properties": {
              "historySync": {
                "type": "object",
                "properties": {
                  "mode": {
                    "type": "string",
                    "enum": [
                      "metadata_only",
                      "deliver"
                    ],
                    "description": "Operating mode selected for this feature.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `metadata_only` | Metadata only. |\n| `deliver` | Deliver. |"
                  },
                  "requestFull": {
                    "type": "boolean",
                    "description": "Whether request full."
                  }
                },
                "additionalProperties": false,
                "description": "History synchronization behavior for newly connected sessions."
              },
              "hms": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "enabled": {
                        "type": "boolean",
                        "enum": [
                          false
                        ],
                        "description": "Whether this feature is enabled.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `false` | False. |"
                      }
                    },
                    "required": [
                      "enabled"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "enabled": {
                        "type": "boolean",
                        "enum": [
                          true
                        ],
                        "description": "Whether this feature is enabled.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
                      },
                      "region": {
                        "type": "string",
                        "pattern": "^[a-z0-9][a-z0-9-]{0,31}$",
                        "description": "Specifies region for this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z0-9][a-z0-9-]{0,31}$` |"
                      },
                      "policy": {
                        "type": "string",
                        "enum": [
                          "short",
                          "standard",
                          "extended",
                          "compliance",
                          "enterprise_archive"
                        ],
                        "description": "Specifies policy for this any of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `short` | Short. |\n| `standard` | Standard. |\n| `extended` | Extended. |\n| `compliance` | Compliance. |\n| `enterprise_archive` | Enterprise archive. |"
                      },
                      "retentionDays": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 2555,
                        "description": "Specifies retention days for this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `2555` (inclusive) |"
                      },
                      "policyVersion": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 128,
                        "description": "Specifies policy version for this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
                      },
                      "legalHold": {
                        "type": "boolean",
                        "description": "Whether legal hold."
                      }
                    },
                    "required": [
                      "enabled",
                      "region",
                      "policy"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "Specifies hms for this override.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `enabled`: `false`; Required fields: `enabled` |\n| Alternative 2 | Type: `object`; Field `enabled`: `true`; Field `policy`: `short` or `standard` or `extended` or `compliance` or `enterprise_archive`; Required fields: `enabled`, `region`, `policy` |"
              },
              "observation": {
                "type": "object",
                "properties": {
                  "presenceMode": {
                    "type": "string",
                    "enum": [
                      "off",
                      "events",
                      "cache"
                    ],
                    "description": "Behavior selected for presence.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
                  },
                  "typingMode": {
                    "type": "string",
                    "enum": [
                      "off",
                      "events",
                      "cache"
                    ],
                    "description": "Behavior selected for typing.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
                  },
                  "labelMode": {
                    "type": "string",
                    "enum": [
                      "off",
                      "events",
                      "cache",
                      "project"
                    ],
                    "description": "Behavior selected for label.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |\n| `project` | Project. |"
                  },
                  "quickReplyMode": {
                    "type": "string",
                    "enum": [
                      "off",
                      "events",
                      "cache"
                    ],
                    "description": "Behavior selected for quick reply.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
                  }
                },
                "additionalProperties": false,
                "description": "Structured observation values for this override."
              }
            },
            "additionalProperties": false,
            "description": "Structured overrides values for this platform session configuration view."
          },
          "sources": {
            "type": "object",
            "properties": {
              "observation.presenceMode": {
                "type": "string",
                "enum": [
                  "platform",
                  "team",
                  "project",
                  "session"
                ],
                "description": "Behavior selected for observation.presence.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `platform` | Platform. |\n| `team` | Team. |\n| `project` | Project. |\n| `session` | Session. |"
              },
              "observation.typingMode": {
                "type": "string",
                "enum": [
                  "platform",
                  "team",
                  "project",
                  "session"
                ],
                "description": "Behavior selected for observation.typing.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `platform` | Platform. |\n| `team` | Team. |\n| `project` | Project. |\n| `session` | Session. |"
              },
              "observation.labelMode": {
                "type": "string",
                "enum": [
                  "platform",
                  "team",
                  "project",
                  "session"
                ],
                "description": "Behavior selected for observation.label.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `platform` | Platform. |\n| `team` | Team. |\n| `project` | Project. |\n| `session` | Session. |"
              },
              "observation.quickReplyMode": {
                "type": "string",
                "enum": [
                  "platform",
                  "team",
                  "project",
                  "session"
                ],
                "description": "Behavior selected for observation.quick reply.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `platform` | Platform. |\n| `team` | Team. |\n| `project` | Project. |\n| `session` | Session. |"
              },
              "historySync.mode": {
                "type": "string",
                "enum": [
                  "platform",
                  "team",
                  "project",
                  "session",
                  "consent"
                ],
                "description": "Behavior selected for history sync.mode.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `platform` | Platform. |\n| `team` | Team. |\n| `project` | Project. |\n| `session` | Session. |\n| `consent` | Consent. |"
              },
              "historySync.requestFull": {
                "type": "string",
                "enum": [
                  "platform",
                  "team",
                  "project",
                  "session",
                  "consent"
                ],
                "description": "Specifies history sync.request full for this source.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `platform` | Platform. |\n| `team` | Team. |\n| `project` | Project. |\n| `session` | Session. |\n| `consent` | Consent. |"
              },
              "hms": {
                "type": "string",
                "enum": [
                  "platform",
                  "team",
                  "project",
                  "session"
                ],
                "description": "Specifies hms for this source.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `platform` | Platform. |\n| `team` | Team. |\n| `project` | Project. |\n| `session` | Session. |"
              }
            },
            "required": [
              "observation.presenceMode",
              "observation.typingMode",
              "observation.labelMode",
              "observation.quickReplyMode",
              "historySync.mode",
              "historySync.requestFull",
              "hms"
            ],
            "additionalProperties": false,
            "description": "Structured sources values for this platform session configuration view."
          },
          "revisions": {
            "type": "object",
            "properties": {
              "team": {
                "type": "integer",
                "minimum": 0,
                "description": "Specifies team for this revision.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              },
              "project": {
                "type": "integer",
                "minimum": 0,
                "description": "Specifies project for this revision.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              },
              "session": {
                "type": "integer",
                "minimum": 0,
                "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              }
            },
            "required": [
              "team",
              "project",
              "session"
            ],
            "additionalProperties": false,
            "description": "Structured revisions values for this platform session configuration view."
          },
          "application": {
            "type": "object",
            "properties": {
              "desiredGeneration": {
                "type": "integer",
                "minimum": 0,
                "description": "Specifies desired generation for this application.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              },
              "appliedGeneration": {
                "type": "integer",
                "minimum": 0,
                "description": "Specifies applied generation for this application.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              },
              "status": {
                "type": "string",
                "enum": [
                  "pending",
                  "applied"
                ],
                "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending` | Pending. |\n| `applied` | Applied. |"
              }
            },
            "required": [
              "desiredGeneration",
              "appliedGeneration",
              "status"
            ],
            "additionalProperties": false,
            "description": "Structured application values for this platform session configuration view."
          }
        },
        "required": [
          "requestedHistory",
          "effective",
          "overrides",
          "sources",
          "revisions"
        ],
        "additionalProperties": false
      },
      "platform__SessionConfigurationUpdateRequest": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "revision": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies revision for this platform session configuration update request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "configuration": {
            "type": "object",
            "properties": {
              "set": {
                "type": "object",
                "properties": {
                  "historySync": {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "type": "string",
                        "enum": [
                          "metadata_only",
                          "deliver"
                        ],
                        "description": "Operating mode selected for this feature.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `metadata_only` | Metadata only. |\n| `deliver` | Deliver. |"
                      },
                      "requestFull": {
                        "type": "boolean",
                        "description": "Whether request full."
                      }
                    },
                    "additionalProperties": false,
                    "description": "History synchronization behavior for newly connected sessions."
                  },
                  "hms": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "enum": [
                              false
                            ],
                            "description": "Whether this feature is enabled.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `false` | False. |"
                          }
                        },
                        "required": [
                          "enabled"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "enum": [
                              true
                            ],
                            "description": "Whether this feature is enabled.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
                          },
                          "region": {
                            "type": "string",
                            "pattern": "^[a-z0-9][a-z0-9-]{0,31}$",
                            "description": "Specifies region for this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z0-9][a-z0-9-]{0,31}$` |"
                          },
                          "policy": {
                            "type": "string",
                            "enum": [
                              "short",
                              "standard",
                              "extended",
                              "compliance",
                              "enterprise_archive"
                            ],
                            "description": "Specifies policy for this any of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `short` | Short. |\n| `standard` | Standard. |\n| `extended` | Extended. |\n| `compliance` | Compliance. |\n| `enterprise_archive` | Enterprise archive. |"
                          },
                          "retentionDays": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 2555,
                            "description": "Specifies retention days for this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `2555` (inclusive) |"
                          },
                          "policyVersion": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 128,
                            "description": "Specifies policy version for this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
                          },
                          "legalHold": {
                            "type": "boolean",
                            "description": "Whether legal hold."
                          }
                        },
                        "required": [
                          "enabled",
                          "region",
                          "policy"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "description": "Specifies hms for this set.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `enabled`: `false`; Required fields: `enabled` |\n| Alternative 2 | Type: `object`; Field `enabled`: `true`; Field `policy`: `short` or `standard` or `extended` or `compliance` or `enterprise_archive`; Required fields: `enabled`, `region`, `policy` |"
                  },
                  "observation": {
                    "type": "object",
                    "properties": {
                      "presenceMode": {
                        "type": "string",
                        "enum": [
                          "off",
                          "events",
                          "cache"
                        ],
                        "description": "Behavior selected for presence.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
                      },
                      "typingMode": {
                        "type": "string",
                        "enum": [
                          "off",
                          "events",
                          "cache"
                        ],
                        "description": "Behavior selected for typing.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
                      },
                      "labelMode": {
                        "type": "string",
                        "enum": [
                          "off",
                          "events",
                          "cache",
                          "project"
                        ],
                        "description": "Behavior selected for label.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |\n| `project` | Project. |"
                      },
                      "quickReplyMode": {
                        "type": "string",
                        "enum": [
                          "off",
                          "events",
                          "cache"
                        ],
                        "description": "Behavior selected for quick reply.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Structured observation values for this set."
                  }
                },
                "additionalProperties": false,
                "description": "Structured set values for this configuration."
              },
              "reset": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "historySync",
                    "historySync.mode",
                    "historySync.requestFull",
                    "hms",
                    "observation",
                    "observation.presenceMode",
                    "observation.typingMode",
                    "observation.labelMode",
                    "observation.quickReplyMode"
                  ]
                },
                "description": "Reset associated with this configuration.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `historySync` | History sync. |\n| `historySync.mode` | History sync.mode. |\n| `historySync.requestFull` | History sync.request full. |\n| `hms` | Hms. |\n| `observation` | Observation. |\n| `observation.presenceMode` | Observation.presence mode. |\n| `observation.typingMode` | Observation.typing mode. |\n| `observation.labelMode` | Observation.label mode. |\n| `observation.quickReplyMode` | Observation.quick reply mode. |"
              }
            },
            "additionalProperties": false,
            "description": "Structured configuration values for this platform session configuration update request."
          }
        },
        "required": [
          "revision",
          "configuration"
        ],
        "additionalProperties": false
      },
      "platform__CallRecord": {
        "type": "object",
        "additionalProperties": false,
        "description": "One call detail record.",
        "properties": {
          "callId": {
            "type": "string",
            "description": "Call identifier."
          },
          "projectId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Original owning project, retained after number deletion. Null when the original owner is unknown; those records appear only in team-wide reads.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "sessionId": {
            "type": "string",
            "description": "Session name of the number that placed or received the call."
          },
          "direction": {
            "type": "string",
            "enum": [
              "inbound",
              "outbound"
            ],
            "description": "Specifies direction for this platform call record.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inbound` | Inbound. |\n| `outbound` | Outbound. |"
          },
          "upstream": {
            "type": "string",
            "enum": [
              "linked_device",
              "cloud_api"
            ],
            "description": "How the number connects to WhatsApp.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `linked_device` | Linked device. |\n| `cloud_api` | Cloud api. |"
          },
          "outcome": {
            "type": "string",
            "enum": [
              "answered",
              "missed",
              "declined",
              "failed",
              "in_progress"
            ],
            "description": "How the call went. `answered`: media connected, including answered calls still in progress. `declined`: declined by a participant or the other party, or the line was busy. `missed`: nobody answered before ringing stopped or the caller hung up. `failed`: ended before it connected for any other reason, such as a connection or capacity failure. `in_progress`: still ringing.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `answered` | Answered. |\n| `missed` | Missed. |\n| `declined` | Declined. |\n| `failed` | Failed. |\n| `in_progress` | In progress. |"
          },
          "state": {
            "type": "string",
            "enum": [
              "offered",
              "accepted",
              "rejected",
              "missed",
              "ended"
            ],
            "description": "Call outcome. `offered` and `accepted` calls may still be live. `rejected` is an incoming call a participant declined. `missed` is an incoming call that rang without an answer. Both keep that state after the call ends. `ended` covers every other finished call: answered calls, outgoing calls, and incoming calls the service could not host. `endReason` gives the cause.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `offered` | Offered. |\n| `accepted` | Accepted. |\n| `rejected` | Rejected. |\n| `missed` | Missed. |\n| `ended` | Ended. |"
          },
          "hasVideo": {
            "type": "boolean",
            "description": "Whether video."
          },
          "peerRef": {
            "type": [
              "string",
              "null"
            ],
            "description": "Team-specific pseudonym of the other party: the same party has the same value across your team's calls. Null when unknown.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "startedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for started at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "connectedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for connected at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "endedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for ended at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "durationSeconds": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "description": "Connected seconds; 0 for a call that never connected and null until the call ends.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "endReason": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^[a-z][a-z0-9_]{0,63}$",
            "example": "user_hangup",
            "description": "Why the call ended, such as `user_hangup`, `ring_timeout`, `rejected` or `lost_connection`. `other` for an unrecognized reason; null until the call ends.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Pattern: `^[a-z][a-z0-9_]{0,63}$` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z][a-z0-9_]{0,63}$` |"
          }
        },
        "required": [
          "callId",
          "projectId",
          "sessionId",
          "direction",
          "upstream",
          "outcome",
          "state",
          "hasVideo",
          "peerRef",
          "startedAt",
          "connectedAt",
          "endedAt",
          "durationSeconds",
          "endReason"
        ]
      },
      "platform__CallStatsMetrics": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "calls": {
            "type": "integer",
            "minimum": 0,
            "description": "Calls that started in the range.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "answered": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies answered for this platform call stats metric.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "missed": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies missed for this platform call stats metric.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "declined": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies declined for this platform call stats metric.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "failed": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies failed for this platform call stats metric.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "inProgress": {
            "type": "integer",
            "minimum": 0,
            "description": "Calls still ringing.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "answerRate": {
            "type": [
              "number",
              "null"
            ],
            "minimum": 0,
            "maximum": 1,
            "description": "`answered` divided by calls that are no longer ringing, rounded to four decimals. Null when there are none.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
          },
          "totalDurationSeconds": {
            "type": "integer",
            "minimum": 0,
            "description": "Connected seconds of answered calls.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "averageDurationSeconds": {
            "type": [
              "number",
              "null"
            ],
            "minimum": 0,
            "description": "Mean connected seconds of answered calls that have ended, rounded to one decimal. Null when there are none.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "calls",
          "answered",
          "missed",
          "declined",
          "failed",
          "inProgress",
          "answerRate",
          "totalDurationSeconds",
          "averageDurationSeconds"
        ]
      },
      "platform__CallStatsGroup": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "key": {
            "type": "string",
            "description": "Local date (`2026-09-18`) for `day`, local hour (`2026-09-18T14:00`) for `hour`, session name for `session`, or outcome for `outcome`."
          },
          "start": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Start of the day or hour bucket. Null for `session` and `outcome` groups.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "calls": {
            "type": "integer",
            "minimum": 0,
            "description": "Calls that started in the range.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "answered": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies answered for this platform call stats group.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "missed": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies missed for this platform call stats group.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "declined": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies declined for this platform call stats group.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "failed": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies failed for this platform call stats group.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "inProgress": {
            "type": "integer",
            "minimum": 0,
            "description": "Calls still ringing.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "answerRate": {
            "type": [
              "number",
              "null"
            ],
            "minimum": 0,
            "maximum": 1,
            "description": "`answered` divided by calls that are no longer ringing, rounded to four decimals. Null when there are none.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
          },
          "totalDurationSeconds": {
            "type": "integer",
            "minimum": 0,
            "description": "Connected seconds of answered calls.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "averageDurationSeconds": {
            "type": [
              "number",
              "null"
            ],
            "minimum": 0,
            "description": "Mean connected seconds of answered calls that have ended, rounded to one decimal. Null when there are none.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "key",
          "start",
          "calls",
          "answered",
          "missed",
          "declined",
          "failed",
          "inProgress",
          "answerRate",
          "totalDurationSeconds",
          "averageDurationSeconds"
        ]
      },
      "platform__CallStatsHeatmapCell": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "dayOfWeek": {
            "type": "integer",
            "minimum": 1,
            "maximum": 7,
            "description": "ISO day of week in `timezone`: 1 is Monday, 7 is Sunday.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `7` (inclusive) |"
          },
          "hour": {
            "type": "integer",
            "minimum": 0,
            "maximum": 23,
            "description": "Specifies hour for this platform call stats heatmap cell.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `23` (inclusive) |"
          },
          "calls": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies calls for this platform call stats heatmap cell.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "answered": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies answered for this platform call stats heatmap cell.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "dayOfWeek",
          "hour",
          "calls",
          "answered"
        ]
      },
      "platform__CallStats": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "since": {
            "type": "string",
            "format": "date-time",
            "description": "Specifies since for this platform call stat.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "until": {
            "type": "string",
            "format": "date-time",
            "description": "Specifies until for this platform call stat.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "timezone": {
            "type": "string",
            "description": "Specifies timezone for this platform call stat."
          },
          "groupBy": {
            "type": "string",
            "enum": [
              "day",
              "hour",
              "session",
              "outcome"
            ],
            "description": "Specifies group by for this platform call stat.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `day` | Day. |\n| `hour` | Hour. |\n| `session` | Session. |\n| `outcome` | Outcome. |"
          },
          "totals": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__CallStatsMetrics"
              }
            ],
            "description": "Specifies totals for this platform call stat."
          },
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/platform__CallStatsGroup"
            },
            "description": "Groups associated with this platform call stat."
          },
          "groupsTruncated": {
            "type": "boolean",
            "description": "True when a `session` grouping left out numbers beyond the first 500. Totals still count every call."
          },
          "heatmap": {
            "type": "array",
            "minItems": 168,
            "maxItems": 168,
            "items": {
              "$ref": "#/components/schemas/platform__CallStatsHeatmapCell"
            },
            "description": "Calls by day of week and hour, Monday 00:00 first. Every cell is present.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `168` through `168` items |"
          }
        },
        "required": [
          "since",
          "until",
          "timezone",
          "groupBy",
          "totals",
          "groups",
          "groupsTruncated",
          "heatmap"
        ]
      },
      "platform__UsageMeter": {
        "type": "string",
        "enum": [
          "call.duration",
          "call.cloud_pulses",
          "campaign.call",
          "tts.characters",
          "tts.seconds",
          "stt.seconds",
          "agent.seconds",
          "agent.tokens",
          "agent.provider_cost",
          "channels.peak",
          "storage.byte_days"
        ],
        "description": "What was measured. Calls record `call.duration` (seconds) and, for outgoing Cloud API calls, `call.cloud_pulses` (6-second pulses). The other meters belong to voice automation and have no records yet."
      },
      "platform__UsageUnit": {
        "type": "string",
        "enum": [
          "second",
          "pulse",
          "call",
          "character",
          "token",
          "provider_unit",
          "channel",
          "byte_day"
        ]
      },
      "platform__UsageKeySource": {
        "type": "string",
        "enum": [
          "none",
          "managed",
          "customer"
        ],
        "description": "Whose provider key produced the usage. `none` for usage without a provider key, such as calls."
      },
      "platform__UsageRecord": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "meter": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__UsageMeter"
              }
            ],
            "description": "Specifies meter for this platform usage record.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `call.duration` | Call.duration. |\n| `call.cloud_pulses` | Call.cloud pulses. |\n| `campaign.call` | Campaign.call. |\n| `tts.characters` | Tts.characters. |\n| `tts.seconds` | Tts.seconds. |\n| `stt.seconds` | Stt.seconds. |\n| `agent.seconds` | Agent.seconds. |\n| `agent.tokens` | Agent.tokens. |\n| `agent.provider_cost` | Agent.provider cost. |\n| `channels.peak` | Channels.peak. |\n| `storage.byte_days` | Storage.byte days. |"
          },
          "quantity": {
            "type": "number",
            "minimum": 0,
            "description": "Number of units included for this item.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "unit": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__UsageUnit"
              }
            ],
            "description": "Specifies unit for this platform usage record.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `second` | Second. |\n| `pulse` | Pulse. |\n| `call` | Call. |\n| `character` | Character. |\n| `token` | Token. |\n| `provider_unit` | Provider unit. |\n| `channel` | Channel. |\n| `byte_day` | Byte day. |"
          },
          "dimensions": {
            "type": "object",
            "additionalProperties": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "description": "Closed, per-meter attributes. Call meters carry `direction`, `upstream` (`linked_device` or `cloud_api`), `origin`, `participants`, `connections`, `sipLegs` and `video`."
          },
          "keySource": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__UsageKeySource"
              }
            ],
            "description": "Specifies key source for this platform usage record.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `managed` | Managed. |\n| `customer` | Customer. |"
          },
          "sourceKind": {
            "type": "string",
            "enum": [
              "call",
              "attempt",
              "flow_run",
              "conversation",
              "asset",
              "team"
            ],
            "description": "Category assigned to source.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `call` | Call. |\n| `attempt` | Attempt. |\n| `flow_run` | Flow run. |\n| `conversation` | Conversation. |\n| `asset` | Asset. |\n| `team` | Team. |"
          },
          "sourceId": {
            "type": "string",
            "description": "The call id for call meters."
          },
          "projectId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Original owning project, preserved across usage revisions and number deletion. Null when unknown; project-filtered reads exclude unattributed records.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "session": {
            "type": [
              "string",
              "null"
            ],
            "description": "The number (session name) the usage belongs to.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time",
            "description": "When the usage happened. For calls, when the call ended.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "recordedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for recorded at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "revision": {
            "type": "integer",
            "minimum": 1,
            "description": "Increases when a later observation corrects the record, for example a call end reported after a lost connection.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
          },
          "pricingState": {
            "type": "string",
            "enum": [
              "unpriced",
              "priced",
              "waived",
              "settled"
            ],
            "description": "`unpriced` while usage is measured but not charged.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `unpriced` | Unpriced. |\n| `priced` | Priced. |\n| `waived` | Waived. |\n| `settled` | Settled. |"
          },
          "rateCard": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
              },
              "version": {
                "type": "integer",
                "description": "Specifies version for this rate card."
              }
            },
            "required": [
              "id",
              "version"
            ],
            "description": "The rate card that applied when the usage was recorded. Null while no rate card exists.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `id`, `version` |\n| Alternative 2 | `null` |"
          },
          "pricedCredits": {
            "type": [
              "number",
              "null"
            ],
            "description": "Credits charged for the record. Null until the record is priced.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "id",
          "meter",
          "quantity",
          "unit",
          "dimensions",
          "keySource",
          "sourceKind",
          "sourceId",
          "projectId",
          "session",
          "occurredAt",
          "recordedAt",
          "revision",
          "pricingState",
          "rateCard",
          "pricedCredits"
        ]
      },
      "platform__UsageRecordPage": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "records": {
            "type": "array",
            "maxItems": 100,
            "items": {
              "$ref": "#/components/schemas/platform__UsageRecord"
            },
            "description": "Records associated with this platform usage record page.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `100` items |"
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Pass as `cursor` for the next page; null on the last page.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "records",
          "nextCursor"
        ]
      },
      "platform__UsageMeterTotal": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "meter": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__UsageMeter"
              }
            ],
            "description": "Specifies meter for this platform usage meter total.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `call.duration` | Call.duration. |\n| `call.cloud_pulses` | Call.cloud pulses. |\n| `campaign.call` | Campaign.call. |\n| `tts.characters` | Tts.characters. |\n| `tts.seconds` | Tts.seconds. |\n| `stt.seconds` | Stt.seconds. |\n| `agent.seconds` | Agent.seconds. |\n| `agent.tokens` | Agent.tokens. |\n| `agent.provider_cost` | Agent.provider cost. |\n| `channels.peak` | Channels.peak. |\n| `storage.byte_days` | Storage.byte days. |"
          },
          "unit": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__UsageUnit"
              }
            ],
            "description": "Specifies unit for this platform usage meter total.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `second` | Second. |\n| `pulse` | Pulse. |\n| `call` | Call. |\n| `character` | Character. |\n| `token` | Token. |\n| `provider_unit` | Provider unit. |\n| `channel` | Channel. |\n| `byte_day` | Byte day. |"
          },
          "keySource": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__UsageKeySource"
              }
            ],
            "description": "Specifies key source for this platform usage meter total.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `managed` | Managed. |\n| `customer` | Customer. |"
          },
          "quantity": {
            "type": "number",
            "minimum": 0,
            "description": "Number of units included for this item.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "records": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies records for this platform usage meter total.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "meter",
          "unit",
          "keySource",
          "quantity",
          "records"
        ]
      },
      "platform__UsageSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "period": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}$",
            "description": "Calendar month in UTC.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\d{4}-\\d{2}$` |"
          },
          "start": {
            "type": "string",
            "format": "date-time",
            "description": "Specifies start for this platform usage summary.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "end": {
            "type": "string",
            "format": "date-time",
            "description": "Specifies end for this platform usage summary.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "projectId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "session": {
            "type": [
              "string",
              "null"
            ],
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "billingEnabled": {
            "type": "boolean",
            "description": "Always false while usage is measured but not charged."
          },
          "meters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/platform__UsageMeterTotal"
            },
            "description": "Meters associated with this platform usage summary."
          },
          "numbers": {
            "type": "array",
            "maxItems": 100,
            "description": "Totals per number, most call time first.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `100` items |",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "session": {
                  "type": "string",
                  "description": "Identifier of the connected Polymorfa session."
                },
                "projectId": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "uuid",
                  "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                },
                "meters": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/platform__UsageMeterTotal"
                  },
                  "description": "Meters associated with this number."
                }
              },
              "required": [
                "session",
                "projectId",
                "meters"
              ]
            }
          },
          "numbersTruncated": {
            "type": "boolean",
            "description": "True when more than 100 numbers had usage."
          }
        },
        "required": [
          "period",
          "start",
          "end",
          "projectId",
          "session",
          "billingEnabled",
          "meters",
          "numbers",
          "numbersTruncated"
        ]
      },
      "platform__UsageGate": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "key": {
            "type": "string",
            "enum": [
              "calls.outbound_monthly",
              "voice.campaigns",
              "voice.campaigns.recipients",
              "voice.campaigns.calls_monthly",
              "voice.channels.concurrent",
              "voice.audio_library",
              "voice.audio_library.assets",
              "voice.flows",
              "voice.agents.elevenlabs",
              "voice.agents.openai_realtime",
              "voice.providers.managed",
              "voice.providers.customer_key",
              "voice.agent_minutes_monthly",
              "voice.tts_characters_monthly",
              "voice.stt_minutes_monthly",
              "voice.storage.recordings",
              "voice.storage.transcripts"
            ],
            "description": "Specifies key for this platform usage gate.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `calls.outbound_monthly` | Calls.outbound monthly. |\n| `voice.campaigns` | Voice.campaigns. |\n| `voice.campaigns.recipients` | Voice.campaigns.recipients. |\n| `voice.campaigns.calls_monthly` | Voice.campaigns.calls monthly. |\n| `voice.channels.concurrent` | Voice.channels.concurrent. |\n| `voice.audio_library` | Voice.audio library. |\n| `voice.audio_library.assets` | Voice.audio library.assets. |\n| `voice.flows` | Voice.flows. |\n| `voice.agents.elevenlabs` | Voice.agents.elevenlabs. |\n| `voice.agents.openai_realtime` | Voice.agents.openai realtime. |\n| `voice.providers.managed` | Voice.providers.managed. |\n| `voice.providers.customer_key` | Voice.providers.customer key. |\n| `voice.agent_minutes_monthly` | Voice.agent minutes monthly. |\n| `voice.tts_characters_monthly` | Voice.tts characters monthly. |\n| `voice.stt_minutes_monthly` | Voice.stt minutes monthly. |\n| `voice.storage.recordings` | Voice.storage.recordings. |\n| `voice.storage.transcripts` | Voice.storage.transcripts. |"
          },
          "kind": {
            "type": "string",
            "enum": [
              "capability",
              "quota",
              "limit",
              "concurrency"
            ],
            "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `capability` | Capability. |\n| `quota` | Quota. |\n| `limit` | Limit. |\n| `concurrency` | Concurrency. |"
          },
          "subject": {
            "type": "string",
            "enum": [
              "team",
              "number",
              "project",
              "campaign"
            ],
            "description": "What the limit applies to.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `team` | Team. |\n| `number` | Number. |\n| `project` | Project. |\n| `campaign` | Campaign. |"
          },
          "mode": {
            "type": "string",
            "enum": [
              "off",
              "record",
              "enforce"
            ],
            "description": "`record` counts actions over the limit without refusing them. `enforce` refuses them with `gate_limit_reached`. `off` does not check.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `record` | Record. |\n| `enforce` | Enforce. |"
          },
          "active": {
            "type": "boolean",
            "description": "Whether an action checks this gate today. Voice automation gates are inactive until those features ship."
          },
          "limit": {
            "type": [
              "number",
              "null"
            ],
            "description": "For capability gates, 1 when included and 0 when not. Otherwise the limit, or -1 for no limit. Null when the limit applies per number and no `session` was given.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "used": {
            "type": [
              "number",
              "null"
            ],
            "description": "Usage this calendar month (UTC) counted against a quota. Per-number quotas count only the current number; retained usage from a deleted number with the same name is excluded.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "unit": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "second",
              "pulse",
              "call",
              "character",
              "token",
              "provider_unit",
              "channel",
              "byte_day",
              "count",
              "minute",
              null
            ],
            "description": "Specifies unit for this platform usage gate.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `second` | Second. |\n| `pulse` | Pulse. |\n| `call` | Call. |\n| `character` | Character. |\n| `token` | Token. |\n| `provider_unit` | Provider unit. |\n| `channel` | Channel. |\n| `byte_day` | Byte day. |\n| `count` | Count. |\n| `minute` | Minute. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `second` or `pulse` or `call` or `character` or `token` or `provider_unit` or `channel` or `byte_day` or `count` or `minute` |\n| Alternative 2 | `null` |"
          },
          "overLimit": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether the next action would exceed the limit.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `boolean` |\n| Alternative 2 | `null` |"
          },
          "decisions": {
            "type": "object",
            "additionalProperties": false,
            "description": "Checks over the limit in the last 30 days (UTC).",
            "properties": {
              "wouldBlock": {
                "type": "integer",
                "minimum": 0,
                "description": "Allowed because the gate records only.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              },
              "blocked": {
                "type": "integer",
                "minimum": 0,
                "description": "Refused because the gate enforces.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              },
              "evaluationError": {
                "type": "integer",
                "minimum": 0,
                "description": "Could not be evaluated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              }
            },
            "required": [
              "wouldBlock",
              "blocked",
              "evaluationError"
            ]
          }
        },
        "required": [
          "key",
          "kind",
          "subject",
          "mode",
          "active",
          "limit",
          "used",
          "unit",
          "overLimit",
          "decisions"
        ]
      },
      "platform__UsageGateList": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "session": {
            "type": [
              "string",
              "null"
            ],
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "gates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/platform__UsageGate"
            },
            "description": "Gates associated with this platform usage gate list."
          }
        },
        "required": [
          "session",
          "gates"
        ]
      },
      "platform__QuickLinkSettings": {
        "type": "object",
        "additionalProperties": false,
        "description": "Saved QuickLink settings for one scope. `logoUrl` is a short-lived read URL for the saved logo.",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          },
          "successCallbackUrl": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "Project-owned HTTPS destination after connection confirmation.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uri` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
          },
          "failureCallbackUrl": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "Project-owned HTTPS destination after cancellation.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uri` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
          },
          "businessName": {
            "type": [
              "string",
              "null"
            ],
            "description": "Business name shown to the customer.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "headline": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies headline for this platform quick link setting.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Human-readable description of this resource.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "successMessage": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies success message for this platform quick link setting.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "supportUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "URL for the support.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "privacyUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "URL for the privacy.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "termsUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "URL for the terms.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "accent": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies accent for this platform quick link setting.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "theme": {
            "type": "string",
            "enum": [
              "light",
              "dark",
              "system"
            ],
            "description": "Visual theme used by the widget.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `light` | Light. |\n| `dark` | Dark. |\n| `system` | System. |"
          },
          "hideWatermark": {
            "type": "boolean",
            "description": "Saved preference to hide Powered by Polymorfa. QuickLink pages hide it only while the team is active and has a Branded QuickLink add-on."
          },
          "allowPhoneChange": {
            "type": "boolean",
            "description": "Allow recipients to change a prefilled phone number. Defaults to false."
          },
          "shape": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "square",
              "rounded",
              "pill",
              null
            ],
            "description": "Specifies shape for this platform quick link setting.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `square` | Square. |\n| `rounded` | Rounded. |\n| `pill` | Pill. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `square` or `rounded` or `pill` |\n| Alternative 2 | `null` |"
          },
          "radiusPx": {
            "type": [
              "number",
              "null"
            ],
            "description": "Specifies radius px for this platform quick link setting.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "logoMode": {
            "type": "string",
            "enum": [
              "none",
              "custom",
              "organization",
              "project"
            ],
            "description": "Behavior selected for logo.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `custom` | Custom. |\n| `organization` | Organization. |\n| `project` | Project. |"
          },
          "logoStorageId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Identifier for the logo storage.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "logoSourceStorageId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Identifier for the logo source storage.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "logoUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "URL for the logo.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "historySync": {
            "type": "string",
            "enum": [
              "ask",
              "force_on",
              "force_off"
            ],
            "description": "History synchronization behavior for newly connected sessions.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `ask` | Ask. |\n| `force_on` | Force on. |\n| `force_off` | Force off. |"
          },
          "methods": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string",
              "enum": [
                "qr",
                "pairing"
              ]
            },
            "description": "Connection methods enabled for the widget.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `qr` | Qr. |\n| `pairing` | Pairing. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `array` |\n| Alternative 2 | `null` |"
          },
          "defaultMethod": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "qr",
              "pairing",
              null
            ],
            "description": "Specifies default method for this platform quick link setting.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `qr` | Qr. |\n| `pairing` | Pairing. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `qr` or `pairing` |\n| Alternative 2 | `null` |"
          },
          "createdAt": {
            "type": "integer",
            "description": "Unix timestamp in milliseconds when this resource was created."
          },
          "updatedAt": {
            "type": "integer",
            "description": "Unix timestamp in milliseconds when this resource was last updated."
          }
        },
        "required": [
          "id",
          "projectId",
          "enabled",
          "successCallbackUrl",
          "failureCallbackUrl",
          "businessName",
          "headline",
          "description",
          "successMessage",
          "supportUrl",
          "privacyUrl",
          "termsUrl",
          "accent",
          "theme",
          "hideWatermark",
          "allowPhoneChange",
          "shape",
          "radiusPx",
          "logoMode",
          "logoStorageId",
          "logoSourceStorageId",
          "logoUrl",
          "historySync",
          "methods",
          "defaultMethod",
          "createdAt",
          "updatedAt"
        ]
      },
      "platform__UpdateQuickLinkSettingsRequest": {
        "type": "object",
        "additionalProperties": false,
        "description": "QuickLink settings for the team or one project. Omitted fields keep their saved value; `null` clears an optional field.",
        "properties": {
          "projectId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__ProjectId"
              }
            ],
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "enabled": {
            "type": "boolean",
            "description": "Allows QuickLinks to be created for the scope."
          },
          "successCallbackUrl": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "pattern": "^[Hh][Tt][Tt][Pp][Ss]://",
            "maxLength": 2048,
            "description": "Project-only destination after connection confirmation. Snapshotted when issuing a link.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: At most `2048` characters; Format: `uri`; Pattern: `^[Hh][Tt][Tt][Pp][Ss]://` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `2048` characters |\n| Format | `uri` |\n| Pattern | `^[Hh][Tt][Tt][Pp][Ss]://` |"
          },
          "failureCallbackUrl": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "pattern": "^[Hh][Tt][Tt][Pp][Ss]://",
            "maxLength": 2048,
            "description": "Project-only destination after cancellation. Snapshotted when issuing a link.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: At most `2048` characters; Format: `uri`; Pattern: `^[Hh][Tt][Tt][Pp][Ss]://` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `2048` characters |\n| Format | `uri` |\n| Pattern | `^[Hh][Tt][Tt][Pp][Ss]://` |"
          },
          "businessName": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 120,
            "description": "Business name shown to the customer.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: At most `120` characters |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `120` characters |"
          },
          "headline": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 80,
            "description": "Page title shown above the pairing flow. Defaults to “Connect WhatsApp”.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: At most `80` characters |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `80` characters |"
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 280,
            "description": "Intro sentence shown under the headline.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: At most `280` characters |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `280` characters |"
          },
          "successMessage": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 280,
            "description": "Message shown after the number connects.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: At most `280` characters |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `280` characters |"
          },
          "supportUrl": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "pattern": "^[Hh][Tt][Tt][Pp][Ss]://",
            "maxLength": 2048,
            "description": "Help link shown on the page.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: At most `2048` characters; Format: `uri`; Pattern: `^[Hh][Tt][Tt][Pp][Ss]://` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `2048` characters |\n| Format | `uri` |\n| Pattern | `^[Hh][Tt][Tt][Pp][Ss]://` |"
          },
          "privacyUrl": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "pattern": "^[Hh][Tt][Tt][Pp][Ss]://",
            "maxLength": 2048,
            "description": "Privacy policy link shown on the consent step.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: At most `2048` characters; Format: `uri`; Pattern: `^[Hh][Tt][Tt][Pp][Ss]://` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `2048` characters |\n| Format | `uri` |\n| Pattern | `^[Hh][Tt][Tt][Pp][Ss]://` |"
          },
          "termsUrl": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "pattern": "^[Hh][Tt][Tt][Pp][Ss]://",
            "maxLength": 2048,
            "description": "Terms link shown on the consent step.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: At most `2048` characters; Format: `uri`; Pattern: `^[Hh][Tt][Tt][Pp][Ss]://` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `2048` characters |\n| Format | `uri` |\n| Pattern | `^[Hh][Tt][Tt][Pp][Ss]://` |"
          },
          "accent": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^#[0-9A-Fa-f]{6}$",
            "description": "Specifies accent for this platform update quick link settings request.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Pattern: `^#[0-9A-Fa-f]{6}$` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^#[0-9A-Fa-f]{6}$` |"
          },
          "theme": {
            "type": "string",
            "enum": [
              "light",
              "dark",
              "system"
            ],
            "description": "Visual theme used by the widget.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `light` | Light. |\n| `dark` | Dark. |\n| `system` | System. |"
          },
          "hideWatermark": {
            "type": "boolean",
            "description": "Hide Powered by Polymorfa. Setting `true` requires an active team with a Branded QuickLink add-on; otherwise the request returns `402` with code `addon_required`."
          },
          "allowPhoneChange": {
            "type": "boolean",
            "description": "Allow recipients to change a prefilled phone number. Defaults to false."
          },
          "shape": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "square",
              "rounded",
              "pill",
              null
            ],
            "description": "Specifies shape for this platform update quick link settings request.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `square` | Square. |\n| `rounded` | Rounded. |\n| `pill` | Pill. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `square` or `rounded` or `pill` |\n| Alternative 2 | `null` |"
          },
          "radiusPx": {
            "type": [
              "number",
              "null"
            ],
            "minimum": 0,
            "maximum": 999,
            "description": "Specifies radius px for this platform update quick link settings request.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `999` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `999` (inclusive) |"
          },
          "logoMode": {
            "type": "string",
            "enum": [
              "none",
              "custom",
              "organization",
              "project"
            ],
            "description": "Behavior selected for logo.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `custom` | Custom. |\n| `organization` | Organization. |\n| `project` | Project. |"
          },
          "logoStorageId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Identifier for the logo storage.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "logoSourceStorageId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Identifier for the logo source storage.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "historySync": {
            "type": "string",
            "enum": [
              "ask",
              "force_on",
              "force_off"
            ],
            "description": "History synchronization behavior for newly connected sessions.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `ask` | Ask. |\n| `force_on` | Force on. |\n| `force_off` | Force off. |"
          },
          "methods": {
            "type": [
              "array",
              "null"
            ],
            "minItems": 1,
            "maxItems": 2,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "enum": [
                "qr",
                "pairing"
              ]
            },
            "description": "Connection methods offered on hosted QuickLink pages.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `qr` | Qr. |\n| `pairing` | Pairing. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `array`; Array size: `1` through `2` items; Duplicates: Not accepted; every array item must be unique |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `2` items |\n| Duplicates | Not accepted; every array item must be unique |"
          },
          "defaultMethod": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "qr",
              "pairing",
              null
            ],
            "description": "Method the page opens first. Unset lets the page choose by device.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `qr` | Qr. |\n| `pairing` | Pairing. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `qr` or `pairing` |\n| Alternative 2 | `null` |"
          }
        }
      },
      "platform__FlowId": {
        "type": "string",
        "format": "uuid",
        "description": "Polymorfa Flow draft UUID."
      },
      "platform__FlowSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__FlowId"
              }
            ],
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `120` characters |"
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "ready",
              "archived"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `draft` | Draft. |\n| `ready` | Ready. |\n| `archived` | Archived. |"
          },
          "version": {
            "type": "string",
            "description": "Specifies version for this platform flow summary."
          },
          "screenCount": {
            "type": "integer",
            "minimum": 0,
            "maximum": 50,
            "description": "Number of screens.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `50` (inclusive) |"
          },
          "metaLinks": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            },
            "description": "Meta links associated with this platform flow summary."
          },
          "createdAt": {
            "type": "integer",
            "format": "int64",
            "minimum": 0,
            "description": "Unix timestamp in milliseconds when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |\n| Format | `int64` |"
          },
          "updatedAt": {
            "type": "integer",
            "format": "int64",
            "minimum": 0,
            "description": "Unix timestamp in milliseconds when this resource was last updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |\n| Format | `int64` |"
          }
        },
        "required": [
          "id",
          "name",
          "status",
          "version",
          "screenCount",
          "metaLinks",
          "createdAt",
          "updatedAt"
        ]
      },
      "platform__FlowDraft": {
        "allOf": [
          {
            "$ref": "#/components/schemas/platform__FlowSummary"
          },
          {
            "type": "object",
            "properties": {
              "definition": {
                "type": "object",
                "additionalProperties": true,
                "description": "Structured definition for this resource."
              }
            },
            "required": [
              "definition"
            ]
          }
        ]
      },
      "platform__CreateFlowRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__ProjectId"
              }
            ],
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "draftId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__FlowId"
              }
            ],
            "description": "Identifier of the saved draft.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `120` characters |"
          },
          "definition": {
            "type": "object",
            "additionalProperties": true,
            "description": "Structured definition for this resource."
          }
        },
        "required": [
          "projectId",
          "name",
          "definition"
        ]
      },
      "platform__UpdateFlowRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__ProjectId"
              }
            ],
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "expectedUpdatedAt": {
            "type": "integer",
            "format": "int64",
            "minimum": 0,
            "description": "Unix timestamp in milliseconds that must match the resource's current updatedAt value.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |\n| Format | `int64` |"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `120` characters |"
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "ready",
              "archived"
            ],
            "description": "Status value to assign to this resource.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `draft` | Draft. |\n| `ready` | Ready. |\n| `archived` | Archived. |"
          },
          "definition": {
            "type": "object",
            "additionalProperties": true,
            "description": "Structured definition for this resource."
          }
        },
        "required": [
          "projectId",
          "expectedUpdatedAt"
        ]
      },
      "platform__DeleteFlowResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ok": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the requested operation succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          }
        },
        "required": [
          "ok"
        ]
      },
      "platform__ManagementTemplate": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__TemplateId"
              }
            ],
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "createdAt": {
            "type": "integer",
            "format": "int64",
            "minimum": 0,
            "description": "Unix timestamp in milliseconds when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |\n| Format | `int64` |"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `512` characters |"
          },
          "category": {
            "type": "string",
            "description": "Specifies category for this platform management template."
          },
          "language": {
            "type": "string",
            "description": "Language or locale code used for this content."
          },
          "status": {
            "type": "string",
            "description": "Current status of this resource or operation."
          },
          "kind": {
            "type": "string",
            "description": "Kind discriminator for this object."
          },
          "definition": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": true,
            "description": "Structured definition for this resource.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object` |\n| Alternative 2 | `null` |"
          },
          "sampleValues": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Example values used to preview this template field.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object` |\n| Alternative 2 | `null` |"
          },
          "cloudLinks": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            },
            "description": "Cloud links associated with this platform management template."
          },
          "updatedAt": {
            "type": "integer",
            "format": "int64",
            "minimum": 0,
            "description": "Unix timestamp in milliseconds when this resource was last updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |\n| Format | `int64` |"
          }
        },
        "required": [
          "id",
          "createdAt",
          "name",
          "category",
          "language",
          "status",
          "kind",
          "definition",
          "sampleValues",
          "cloudLinks",
          "updatedAt"
        ]
      },
      "platform__CreateManagementTemplateRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__ProjectId"
              }
            ],
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "draftId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__TemplateId"
              }
            ],
            "description": "Identifier of the saved draft.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `512` characters |"
          },
          "definition": {
            "type": "object",
            "additionalProperties": true,
            "description": "Structured definition for this resource."
          },
          "sampleValues": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Example values used to preview this template field.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "projectId",
          "name",
          "definition"
        ]
      },
      "platform__UpdateManagementTemplateRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__ProjectId"
              }
            ],
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `512` characters |"
          },
          "status": {
            "type": "string",
            "description": "Status value to assign to this resource."
          },
          "definition": {
            "type": "object",
            "additionalProperties": true,
            "description": "Structured definition for this resource."
          },
          "sampleValues": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Example values used to preview this template field.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "projectId"
        ]
      },
      "platform__DeleteManagementTemplateResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ok": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the requested operation succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          }
        },
        "required": [
          "ok"
        ]
      },
      "platform__SessionIdentifier": {
        "type": "string",
        "minLength": 1,
        "maxLength": 64,
        "description": "Database session UUID or stable session slug."
      },
      "platform__SessionProjectContext": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__ProjectId"
              }
            ],
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        }
      },
      "platform__SessionTierOverrideRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__ProjectId"
              }
            ],
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "quoteId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the quote.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        },
        "required": [
          "quoteId"
        ]
      },
      "platform__NumberTierChange": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "status": {
            "type": "string",
            "enum": [
              "quoted",
              "queued",
              "applied",
              "rejected"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `quoted` | Quoted. |\n| `queued` | Queued. |\n| `applied` | Applied. |\n| `rejected` | Rejected. |"
          },
          "failureReason": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies failure reason for this platform number tier change.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "expiresAtMs": {
            "type": "integer",
            "description": "Specifies expires at ms for this platform number tier change."
          },
          "quote": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "tier": {
                "type": "string",
                "description": "Specifies tier for this quote."
              },
              "tierOverride": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Specifies tier override for this quote.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
              },
              "amountCents": {
                "type": "number",
                "minimum": 0,
                "multipleOf": 0.000001,
                "description": "Credits charged on application, with up to six decimal places.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |\n| Increment | Multiple of `0.000001` |"
              },
              "priceVersion": {
                "type": "string",
                "description": "Specifies price version for this quote."
              },
              "action": {
                "type": "string",
                "enum": [
                  "upgrade",
                  "downgrade",
                  "configure"
                ],
                "description": "Action represented by this quote.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `upgrade` | Upgrade. |\n| `downgrade` | Downgrade. |\n| `configure` | Configure. |"
              },
              "effectiveAtMs": {
                "type": "integer",
                "description": "Specifies effective at ms for this quote."
              },
              "replacesWindowId": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid",
                "description": "Identifier for the replaces window.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
              }
            },
            "required": [
              "tier",
              "tierOverride",
              "amountCents",
              "priceVersion",
              "action",
              "effectiveAtMs",
              "replacesWindowId"
            ],
            "description": "Structured quote values for this platform number tier change."
          }
        },
        "required": [
          "id",
          "status",
          "failureReason",
          "expiresAtMs",
          "quote"
        ]
      },
      "platform__NumberTierQuoteRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__ProjectId"
              }
            ],
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "tierOverride": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "free",
              "standard",
              "pro",
              null
            ],
            "description": "Specifies tier override for this platform number tier quote request.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `free` | Free. |\n| `standard` | Standard. |\n| `pro` | Pro. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `free` or `standard` or `pro` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "tierOverride"
        ]
      },
      "platform__SessionBatchRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__ProjectId"
              }
            ],
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "sessionIds": {
            "type": "array",
            "minItems": 1,
            "maxItems": 100,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/platform__SessionIdentifier"
            },
            "description": "Session ids associated with this platform session batch request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `100` items |\n| Duplicates | Not accepted; every array item must be unique |\n| Item string length | `1` through `64` characters |"
          }
        },
        "required": [
          "sessionIds"
        ]
      },
      "platform__PlatformSession": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "_id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "_creationTime": {
            "type": "number",
            "description": "Creation time as Unix epoch milliseconds."
          },
          "projectId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__ProjectId"
              }
            ],
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "sessionId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__SessionIdentifier"
              }
            ],
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |"
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Session identifier used to address this linked-device session.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "phone": {
            "type": [
              "string",
              "null"
            ],
            "description": "Phone number in international format.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "platform": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies platform for this platform platform session.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "isBusiness": {
            "type": "boolean",
            "description": "Whether business."
          },
          "testMode": {
            "type": "boolean",
            "description": "Behavior selected for test."
          },
          "tierOverride": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "free",
              "standard",
              "pro",
              "scale",
              null
            ],
            "description": "Specifies tier override for this platform platform session.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `free` | Free. |\n| `standard` | Standard. |\n| `pro` | Pro. |\n| `scale` | Scale. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `free` or `standard` or `pro` or `scale` |\n| Alternative 2 | `null` |"
          },
          "status": {
            "type": "string",
            "description": "Latest runtime connection status."
          },
          "statusReason": {
            "type": [
              "string",
              "null"
            ],
            "description": "Machine-readable reason for the latest connection status, when available.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "messageCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of messages.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "lastActiveAt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Last activity time as Unix epoch milliseconds.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "paidUntil": {
            "type": [
              "number",
              "null"
            ],
            "description": "End of the charged rolling 24-hour window as Unix epoch milliseconds. Null when no charged window exists; expired windows retain their expiry.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "customer": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
              },
              "name": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
              },
              "isDefault": {
                "type": "boolean",
                "description": "Whether default."
              }
            },
            "required": [
              "id",
              "name",
              "isDefault"
            ],
            "description": "Structured customer values for this platform platform session.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `id`, `name`, `isDefault` |\n| Alternative 2 | `null` |"
          },
          "claim": {
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "kind": {
                    "type": "string",
                    "enum": [
                      "unclaimed"
                    ],
                    "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `unclaimed` | Unclaimed. |"
                  }
                },
                "required": [
                  "kind"
                ]
              },
              {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "kind": {
                    "type": "string",
                    "enum": [
                      "claimed-elsewhere"
                    ],
                    "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `claimed-elsewhere` | Claimed elsewhere. |"
                  },
                  "displayName": {
                    "type": "string",
                    "description": "Human-readable display name."
                  },
                  "avatarUrl": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "description": "URL for the avatar.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
                  },
                  "avatarSeed": {
                    "type": "string",
                    "description": "Specifies avatar seed for this one of."
                  },
                  "claimedAt": {
                    "type": "number",
                    "description": "Timestamp for claimed at."
                  }
                },
                "required": [
                  "kind",
                  "displayName",
                  "avatarUrl",
                  "avatarSeed",
                  "claimedAt"
                ]
              }
            ],
            "description": "Specifies claim for this platform platform session.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `kind`: `unclaimed`; Required fields: `kind` |\n| Alternative 2 | Type: `object`; Field `kind`: `claimed-elsewhere`; Required fields: `kind`, `displayName`, `avatarUrl`, `avatarSeed`, `claimedAt` |"
          }
        },
        "required": [
          "_id",
          "_creationTime",
          "projectId",
          "sessionId",
          "name",
          "phone",
          "platform",
          "isBusiness",
          "testMode",
          "tierOverride",
          "status",
          "statusReason",
          "messageCount",
          "lastActiveAt",
          "paidUntil",
          "customer",
          "claim"
        ]
      },
      "platform__SessionStopResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "stopping": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether stopping.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "sessionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        },
        "required": [
          "stopping",
          "sessionId"
        ]
      },
      "platform__SessionStartResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "starting": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether starting.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "sessionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        },
        "required": [
          "starting",
          "sessionId"
        ]
      },
      "platform__SessionRemoveResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "removed": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether removed.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "sessionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        },
        "required": [
          "removed",
          "sessionId"
        ]
      },
      "platform__SessionBatchStopResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "stopping": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100,
            "description": "Specifies stopping for this platform session batch stop result.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `100` (inclusive) |"
          }
        },
        "required": [
          "stopping"
        ]
      },
      "platform__SessionBatchRemoveResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "removed": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100,
            "description": "Specifies removed for this platform session batch remove result.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `100` (inclusive) |"
          }
        },
        "required": [
          "removed"
        ]
      },
      "platform__ProductionEnrollmentRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "business": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "name": {
                "type": "string",
                "minLength": 2,
                "maxLength": 120,
                "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `2` through `120` characters |"
              },
              "website": {
                "type": "string",
                "format": "uri",
                "pattern": "^https://",
                "maxLength": 2048,
                "description": "Specifies website for this business.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `2048` characters |\n| Format | `uri` |\n| Pattern | `^https://` |"
              },
              "supportEmail": {
                "type": "string",
                "format": "email",
                "maxLength": 320,
                "description": "Specifies support email for this business.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `320` characters |\n| Format | `email` |"
              }
            },
            "required": [
              "name",
              "website",
              "supportEmail"
            ],
            "description": "Structured business values for this platform production enrollment request."
          }
        },
        "required": [
          "business"
        ]
      },
      "platform__ProductionEnrollmentResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__ProjectId"
              }
            ],
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "orgId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the org.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "name": {
            "type": "string",
            "description": "Human-readable name for this resource."
          },
          "slug": {
            "type": "string",
            "description": "Specifies slug for this platform production enrollment result."
          },
          "stage": {
            "type": "string",
            "enum": [
              "development"
            ],
            "description": "Specifies stage for this platform production enrollment result.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `development` | Development. |"
          },
          "operationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "enrollmentStatus": {
            "type": "string",
            "enum": [
              "requested",
              "approval_required",
              "provisioning",
              "ready"
            ],
            "description": "Specifies enrollment status for this platform production enrollment result.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `requested` | Requested. |\n| `approval_required` | Approval required. |\n| `provisioning` | Provisioning. |\n| `ready` | Ready. |"
          },
          "billingMode": {
            "type": "string",
            "enum": [
              "payg"
            ],
            "description": "The team's billing mode. Always Pay-As-You-Go, because only Pay-As-You-Go teams can request production.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `payg` | Payg. |"
          }
        },
        "required": [
          "id",
          "orgId",
          "name",
          "slug",
          "stage",
          "operationId",
          "enrollmentStatus",
          "billingMode"
        ]
      },
      "platform__CreatedProject": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__ProjectId"
              }
            ],
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "orgId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the org.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "name": {
            "type": "string",
            "description": "Human-readable name for this resource."
          },
          "slug": {
            "type": "string",
            "description": "Specifies slug for this platform created project."
          },
          "icon": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "type",
              "value"
            ],
            "properties": {
              "type": {
                "type": "string",
                "minLength": 1,
                "maxLength": 32,
                "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `32` characters |"
              },
              "value": {
                "type": "string",
                "minLength": 1,
                "maxLength": 512,
                "description": "Value assigned to this field.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `512` characters |"
              },
              "color": {
                "type": "string",
                "maxLength": 64,
                "description": "Specifies color for this icon.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `64` characters |"
              },
              "storageId": {
                "type": "string",
                "maxLength": 256,
                "description": "Identifier for the storage.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |"
              }
            },
            "description": "Structured icon values for this platform created project."
          },
          "defaultTier": {
            "type": "string",
            "enum": [
              "free",
              "standard",
              "pro"
            ],
            "description": "Specifies default tier for this platform created project.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `free` | Free. |\n| `standard` | Standard. |\n| `pro` | Pro. |"
          },
          "isActive": {
            "type": "boolean",
            "description": "Whether active."
          },
          "stage": {
            "type": "string",
            "enum": [
              "development"
            ],
            "description": "Specifies stage for this platform created project.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `development` | Development. |"
          }
        },
        "required": [
          "id",
          "orgId",
          "name",
          "slug",
          "icon",
          "defaultTier",
          "isActive",
          "stage"
        ]
      },
      "platform__ProductionEnrollmentCommandResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "operationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "action": {
            "type": "string",
            "enum": [
              "approve",
              "cancel"
            ],
            "description": "Action represented by this platform production enrollment command result.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `approve` | Approve. |\n| `cancel` | Cancel. |"
          },
          "accepted": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether accepted.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          }
        },
        "required": [
          "operationId",
          "action",
          "accepted"
        ]
      },
      "platform__RecipientInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "phone": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "Number in international format, for example `+14155550100`. Spaces, dots, hyphens and parentheses are ignored; a leading `00` is read as `+`; digits without `+` are read as including the country code.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |"
          },
          "variables": {
            "type": "object",
            "maxProperties": 50,
            "additionalProperties": {
              "oneOf": [
                {
                  "type": "string",
                  "maxLength": 1024
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "description": "Template variables. Names use letters, digits, `_`, `.` or `-` (at most 64 characters). Values are stored as strings.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Object size | At most `50` properties |"
          }
        },
        "required": [
          "phone"
        ]
      },
      "platform__InvalidRecipientRow": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "row": {
            "type": "integer",
            "minimum": 1,
            "description": "1-based entry position for inline input; spreadsheet row number for a file, where the header is row 1.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
          },
          "reason": {
            "type": "string",
            "enum": [
              "missing_phone",
              "invalid_phone",
              "invalid_variables",
              "invalid_entry"
            ],
            "description": "Reason for the reported state or outcome.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `missing_phone` | Missing phone. |\n| `invalid_phone` | Invalid phone. |\n| `invalid_variables` | Invalid variables. |\n| `invalid_entry` | Invalid entry. |"
          }
        },
        "required": [
          "row",
          "reason"
        ]
      },
      "platform__CampaignFollowUp": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "message"
        ],
        "description": "One optional receipt-timed follow-up, sent from the Number that sent the first message. A beta; a team that is not enrolled gets `403 feature_unavailable`. Expiry must exceed delay and is counted from the first send. Configuration freezes at launch. The first read takes precedence over the first delivery; additional reads do not move it. Replies and opt-outs cancel it. Without a delivery or read receipt it never arms, and an expired wait never sends. Requires a single first message, and the text cannot contain tracked links.",
        "properties": {
          "delaySeconds": {
            "type": "integer",
            "minimum": 60,
            "maximum": 604800,
            "default": 86400,
            "description": "Specifies delay seconds for this platform campaign follow up.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `60` through `604800` (inclusive) |"
          },
          "expirySeconds": {
            "type": "integer",
            "minimum": 86400,
            "maximum": 2592000,
            "default": 604800,
            "description": "Specifies expiry seconds for this platform campaign follow up.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `86400` through `2592000` (inclusive) |"
          },
          "message": {
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "type",
                  "text"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "text"
                    ],
                    "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `text` | Text. |"
                  },
                  "text": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 16384,
                    "description": "Text content carried by this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `16384` characters |"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "type",
                  "templateId"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "template"
                    ],
                    "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `template` | Template. |"
                  },
                  "templateId": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Identifier of the message template.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
                  }
                }
              }
            ],
            "description": "Human-readable message associated with this result.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `type`: `text`; Required fields: `type`, `text` |\n| Alternative 2 | Type: `object`; Field `type`: `template`; Required fields: `type`, `templateId` |"
          }
        }
      },
      "platform__CampaignFollowUpSummary": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "numberId",
          "status",
          "anchorKind",
          "firstDeliveredAt",
          "firstReadAt",
          "dueAt",
          "expiresAt",
          "sentAt",
          "deliveredAt",
          "readAt",
          "repliedAt",
          "reason",
          "commandId"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "numberId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the number.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "status": {
            "type": "string",
            "enum": [
              "waiting_receipt",
              "scheduled",
              "sending",
              "sent",
              "cancelled",
              "expired",
              "failed",
              "outcome_unknown"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `waiting_receipt` | Waiting receipt. |\n| `scheduled` | Scheduled. |\n| `sending` | Sending. |\n| `sent` | Sent. |\n| `cancelled` | Cancelled. |\n| `expired` | Expired. |\n| `failed` | Failed. |\n| `outcome_unknown` | Outcome unknown. |"
          },
          "anchorKind": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "delivered",
              "read",
              null
            ],
            "description": "Category assigned to anchor.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `delivered` | Delivered. |\n| `read` | Read. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `delivered` or `read` |\n| Alternative 2 | `null` |"
          },
          "firstDeliveredAt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Unix milliseconds.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "firstReadAt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Unix milliseconds.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "dueAt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Unix milliseconds.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "sentAt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Unix milliseconds.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "deliveredAt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Unix milliseconds.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "readAt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Unix milliseconds.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "repliedAt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Unix milliseconds.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "expiresAt": {
            "type": "number",
            "description": "Unix milliseconds."
          },
          "reason": {
            "type": [
              "string",
              "null"
            ],
            "description": "Reason for the reported state or outcome.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "commandId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Identifier for the command.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        }
      },
      "platform__CampaignFollowUpReport": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "total",
          "waiting",
          "scheduled",
          "sending",
          "sent",
          "delivered",
          "read",
          "replied",
          "cancelled",
          "expired",
          "failed",
          "unknown",
          "nextDueAt"
        ],
        "properties": {
          "total": {
            "type": "integer",
            "minimum": 0,
            "description": "Final total for this order or price summary.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "waiting": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies waiting for this platform campaign follow up report.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "scheduled": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies scheduled for this platform campaign follow up report.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "sending": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies sending for this platform campaign follow up report.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "sent": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies sent for this platform campaign follow up report.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "delivered": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies delivered for this platform campaign follow up report.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "read": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies read for this platform campaign follow up report.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "replied": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies replied for this platform campaign follow up report.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "cancelled": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies cancelled for this platform campaign follow up report.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "expired": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies expired for this platform campaign follow up report.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "failed": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies failed for this platform campaign follow up report.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "unknown": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies unknown for this platform campaign follow up report.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "nextDueAt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Unix milliseconds.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          }
        }
      },
      "platform__CampaignTestSendRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Required when using a team API key. Project tokens derive the project from the credential.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "sessionId": {
            "type": "string",
            "format": "uuid",
            "description": "The number to send the test from. It must be connected, on a plan that includes Campaigns and, when the campaign selects numbers, one of them.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "to": {
            "type": "string",
            "minLength": 1,
            "maxLength": 32,
            "description": "The seed recipient in international format. It must be the phone of a number connected to your team.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `32` characters |",
            "example": "+5511999990000"
          },
          "sampleRecipientId": {
            "type": "string",
            "format": "uuid",
            "description": "A recipient of this campaign whose variables fill the content. Without it and without `variables`, the campaign's first recipient, or its audience's first member, is the sample.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "variables": {
            "type": "object",
            "maxProperties": 50,
            "additionalProperties": {
              "oneOf": [
                {
                  "type": "string",
                  "maxLength": 1024
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "description": "Variable values for the test. They override the sample recipient's values; without `sampleRecipientId`, only these values are used.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Object size | At most `50` properties |"
          }
        },
        "required": [
          "sessionId",
          "to"
        ]
      },
      "platform__CampaignTestSend": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "The test send's ID.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "campaignId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the campaign.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "status": {
            "type": "string",
            "enum": [
              "sent"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `sent` | Sent. |"
          },
          "from": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "sessionId": {
                "type": "string",
                "format": "uuid",
                "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
              },
              "phone": {
                "type": "string",
                "description": "Phone number in international format."
              }
            },
            "required": [
              "sessionId",
              "phone"
            ],
            "description": "The number the test was sent from."
          },
          "to": {
            "type": "string",
            "description": "The seed recipient, in E.164 format."
          },
          "messageId": {
            "type": [
              "string",
              "null"
            ],
            "description": "The WhatsApp message ID, when the send path returned one.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "variables": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "The variable values the content was rendered with."
          },
          "createdAt": {
            "type": "number",
            "description": "When the test was admitted, in Unix milliseconds."
          }
        },
        "required": [
          "id",
          "campaignId",
          "status",
          "from",
          "to",
          "messageId",
          "variables",
          "createdAt"
        ]
      },
      "platform__AudienceSegmentCondition": {
        "description": "One condition. A condition on a missing or null attribute, or a value of another type, is false.",
        "oneOf": [
          {
            "type": "object",
            "additionalProperties": false,
            "description": "The profile has this tag.",
            "properties": {
              "field": {
                "type": "string",
                "enum": [
                  "tag"
                ],
                "description": "Specifies field for this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `tag` | Tag. |"
              },
              "operator": {
                "type": "string",
                "enum": [
                  "contains"
                ],
                "description": "Specifies operator for this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `contains` | Contains. |"
              },
              "value": {
                "type": "string",
                "minLength": 1,
                "description": "1-48 UTF-8 bytes without control characters. The byte limit can be reached before 48 Unicode characters.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
              }
            },
            "required": [
              "field",
              "operator",
              "value"
            ]
          },
          {
            "type": "object",
            "additionalProperties": false,
            "description": "The profile has at least one of these tags.",
            "properties": {
              "field": {
                "type": "string",
                "enum": [
                  "tag"
                ],
                "description": "Specifies field for this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `tag` | Tag. |"
              },
              "operator": {
                "type": "string",
                "enum": [
                  "in"
                ],
                "description": "Specifies operator for this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `in` | In. |"
              },
              "values": {
                "type": "array",
                "minItems": 1,
                "maxItems": 50,
                "items": {
                  "type": "string",
                  "minLength": 1,
                  "description": "1-48 UTF-8 bytes without control characters. The byte limit can be reached before 48 Unicode characters."
                },
                "description": "Values associated with this one of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `50` items |\n| Item string length | At least `1` characters |"
              }
            },
            "required": [
              "field",
              "operator",
              "values"
            ]
          },
          {
            "type": "object",
            "additionalProperties": false,
            "description": "The profile has at least one tag.",
            "properties": {
              "field": {
                "type": "string",
                "enum": [
                  "tag"
                ],
                "description": "Specifies field for this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `tag` | Tag. |"
              },
              "operator": {
                "type": "string",
                "enum": [
                  "exists"
                ],
                "description": "Specifies operator for this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `exists` | Exists. |"
              }
            },
            "required": [
              "field",
              "operator"
            ]
          },
          {
            "type": "object",
            "additionalProperties": false,
            "description": "The attribute equals this value, with the same type.",
            "properties": {
              "field": {
                "type": "string",
                "enum": [
                  "attribute"
                ],
                "description": "Specifies field for this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `attribute` | Attribute. |"
              },
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]{0,47}$",
                "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z_][A-Za-z0-9_]{0,47}$` |"
              },
              "operator": {
                "type": "string",
                "enum": [
                  "equals"
                ],
                "description": "Specifies operator for this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `equals` | Equals. |"
              },
              "value": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "description": "1-256 UTF-8 bytes. The byte limit can be reached before 256 Unicode characters."
                  },
                  {
                    "type": "number"
                  },
                  {
                    "type": "boolean"
                  }
                ],
                "description": "Value assigned to this field.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: At least `1` characters |\n| Alternative 2 | Type: `number` |\n| Alternative 3 | Type: `boolean` |"
              }
            },
            "required": [
              "field",
              "name",
              "operator",
              "value"
            ]
          },
          {
            "type": "object",
            "additionalProperties": false,
            "description": "The text attribute contains this text, ignoring case.",
            "properties": {
              "field": {
                "type": "string",
                "enum": [
                  "attribute"
                ],
                "description": "Specifies field for this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `attribute` | Attribute. |"
              },
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]{0,47}$",
                "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z_][A-Za-z0-9_]{0,47}$` |"
              },
              "operator": {
                "type": "string",
                "enum": [
                  "contains"
                ],
                "description": "Specifies operator for this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `contains` | Contains. |"
              },
              "value": {
                "type": "string",
                "minLength": 1,
                "description": "1-256 UTF-8 bytes. The byte limit can be reached before 256 Unicode characters.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
              }
            },
            "required": [
              "field",
              "name",
              "operator",
              "value"
            ]
          },
          {
            "type": "object",
            "additionalProperties": false,
            "description": "The attribute equals one of these values.",
            "properties": {
              "field": {
                "type": "string",
                "enum": [
                  "attribute"
                ],
                "description": "Specifies field for this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `attribute` | Attribute. |"
              },
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]{0,47}$",
                "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z_][A-Za-z0-9_]{0,47}$` |"
              },
              "operator": {
                "type": "string",
                "enum": [
                  "in"
                ],
                "description": "Specifies operator for this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `in` | In. |"
              },
              "values": {
                "type": "array",
                "minItems": 1,
                "maxItems": 50,
                "items": {
                  "anyOf": [
                    {
                      "type": "string",
                      "minLength": 1,
                      "description": "1-256 UTF-8 bytes. The byte limit can be reached before 256 Unicode characters."
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "description": "Values associated with this one of.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Item alternative | Accepted input |\n| --- | --- |\n| Item alternative 1 | Type: `string`; String length: At least `1` characters |\n| Item alternative 2 | Type: `number` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `50` items |"
              }
            },
            "required": [
              "field",
              "name",
              "operator",
              "values"
            ]
          },
          {
            "type": "object",
            "additionalProperties": false,
            "description": "The number attribute is greater or less than this number.",
            "properties": {
              "field": {
                "type": "string",
                "enum": [
                  "attribute"
                ],
                "description": "Specifies field for this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `attribute` | Attribute. |"
              },
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]{0,47}$",
                "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z_][A-Za-z0-9_]{0,47}$` |"
              },
              "operator": {
                "type": "string",
                "enum": [
                  "greater_than",
                  "less_than"
                ],
                "description": "Specifies operator for this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `greater_than` | Greater than. |\n| `less_than` | Less than. |"
              },
              "value": {
                "type": "number",
                "description": "Value assigned to this field."
              }
            },
            "required": [
              "field",
              "name",
              "operator",
              "value"
            ]
          },
          {
            "type": "object",
            "additionalProperties": false,
            "description": "The date attribute is before or after this instant. Both bounds are exclusive.",
            "properties": {
              "field": {
                "type": "string",
                "enum": [
                  "attribute"
                ],
                "description": "Specifies field for this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `attribute` | Attribute. |"
              },
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]{0,47}$",
                "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z_][A-Za-z0-9_]{0,47}$` |"
              },
              "operator": {
                "type": "string",
                "enum": [
                  "before",
                  "after"
                ],
                "description": "Specifies operator for this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `before` | Before. |\n| `after` | After. |"
              },
              "value": {
                "type": "string",
                "maxLength": 40,
                "description": "ISO 8601 date (`YYYY-MM-DD`, read as midnight UTC) or date-time with `Z` or an offset.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `40` characters |"
              }
            },
            "required": [
              "field",
              "name",
              "operator",
              "value"
            ]
          },
          {
            "type": "object",
            "additionalProperties": false,
            "description": "The attribute is set and not null.",
            "properties": {
              "field": {
                "type": "string",
                "enum": [
                  "attribute"
                ],
                "description": "Specifies field for this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `attribute` | Attribute. |"
              },
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]{0,47}$",
                "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z_][A-Za-z0-9_]{0,47}$` |"
              },
              "operator": {
                "type": "string",
                "enum": [
                  "exists"
                ],
                "description": "Specifies operator for this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `exists` | Exists. |"
              }
            },
            "required": [
              "field",
              "name",
              "operator"
            ]
          },
          {
            "type": "object",
            "additionalProperties": false,
            "description": "The profile's latest campaign consent assertion has this `allowed` value.",
            "properties": {
              "field": {
                "type": "string",
                "enum": [
                  "consent"
                ],
                "description": "Specifies field for this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `consent` | Consent. |"
              },
              "operator": {
                "type": "string",
                "enum": [
                  "equals"
                ],
                "description": "Specifies operator for this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `equals` | Equals. |"
              },
              "value": {
                "type": "boolean",
                "description": "Value assigned to this field."
              }
            },
            "required": [
              "field",
              "operator",
              "value"
            ]
          },
          {
            "type": "object",
            "additionalProperties": false,
            "description": "The phone was a recipient of this team campaign with this outcome, with the same meaning as a retargeting audience.",
            "properties": {
              "field": {
                "type": "string",
                "enum": [
                  "campaign"
                ],
                "description": "Specifies field for this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `campaign` | Campaign. |"
              },
              "campaignId": {
                "type": "string",
                "format": "uuid",
                "description": "Identifier for the campaign.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
              },
              "outcome": {
                "type": "string",
                "enum": [
                  "delivered",
                  "not_delivered",
                  "read",
                  "not_read",
                  "replied",
                  "not_replied",
                  "failed"
                ],
                "description": "Specifies outcome for this one of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `delivered` | Delivered. |\n| `not_delivered` | Not delivered. |\n| `read` | Read. |\n| `not_read` | Not read. |\n| `replied` | Replied. |\n| `not_replied` | Not replied. |\n| `failed` | Failed. |"
              }
            },
            "required": [
              "field",
              "campaignId",
              "outcome"
            ]
          }
        ]
      },
      "platform__AudienceSegmentRules": {
        "type": "object",
        "additionalProperties": false,
        "description": "Groups combined with `all` or `any`. At most 10 groups, 20 conditions per group, 40 conditions, 5 campaign conditions and 16 KiB.",
        "properties": {
          "match": {
            "type": "string",
            "enum": [
              "all",
              "any"
            ],
            "description": "Specifies match for this platform audience segment rule.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `all` | All. |\n| `any` | Any. |"
          },
          "groups": {
            "type": "array",
            "minItems": 1,
            "maxItems": 10,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "match": {
                  "type": "string",
                  "enum": [
                    "all",
                    "any"
                  ],
                  "description": "Specifies match for this group.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `all` | All. |\n| `any` | Any. |"
                },
                "negate": {
                  "type": "boolean",
                  "description": "Inverts the group's result. Defaults to false."
                },
                "conditions": {
                  "type": "array",
                  "minItems": 1,
                  "maxItems": 20,
                  "items": {
                    "$ref": "#/components/schemas/platform__AudienceSegmentCondition"
                  },
                  "description": "Conditions associated with this group.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Item alternative | Accepted input |\n| --- | --- |\n| Item alternative 1 | Type: `object`; Field `field`: `tag`; Field `operator`: `contains`; Required fields: `field`, `operator`, `value` |\n| Item alternative 2 | Type: `object`; Field `field`: `tag`; Field `operator`: `in`; Required fields: `field`, `operator`, `values` |\n| Item alternative 3 | Type: `object`; Field `field`: `tag`; Field `operator`: `exists`; Required fields: `field`, `operator` |\n| Item alternative 4 | Type: `object`; Field `field`: `attribute`; Field `operator`: `equals`; Required fields: `field`, `name`, `operator`, `value` |\n| Item alternative 5 | Type: `object`; Field `field`: `attribute`; Field `operator`: `contains`; Required fields: `field`, `name`, `operator`, `value` |\n| Item alternative 6 | Type: `object`; Field `field`: `attribute`; Field `operator`: `in`; Required fields: `field`, `name`, `operator`, `values` |\n| Item alternative 7 | Type: `object`; Field `field`: `attribute`; Field `operator`: `greater_than` or `less_than`; Required fields: `field`, `name`, `operator`, `value` |\n| Item alternative 8 | Type: `object`; Field `field`: `attribute`; Field `operator`: `before` or `after`; Required fields: `field`, `name`, `operator`, `value` |\n| Item alternative 9 | Type: `object`; Field `field`: `attribute`; Field `operator`: `exists`; Required fields: `field`, `name`, `operator` |\n| Item alternative 10 | Type: `object`; Field `field`: `consent`; Field `operator`: `equals`; Required fields: `field`, `operator`, `value` |\n| Item alternative 11 | Type: `object`; Field `field`: `campaign`; Field `outcome`: `delivered` or `not_delivered` or `read` or `not_read` or `replied` or `not_replied` or `failed`; Required fields: `field`, `campaignId`, `outcome` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `20` items |"
                }
              },
              "required": [
                "match",
                "conditions"
              ]
            },
            "description": "Groups associated with this platform audience segment rule.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `10` items |"
          }
        },
        "required": [
          "match",
          "groups"
        ]
      },
      "platform__AudienceSegment": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `100` characters |"
          },
          "revision": {
            "type": "integer",
            "minimum": 1,
            "description": "Specifies revision for this platform audience segment.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
          },
          "rules": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__AudienceSegmentRules"
              }
            ],
            "description": "Specifies rules for this platform audience segment."
          },
          "createdAt": {
            "type": "integer",
            "minimum": 0,
            "description": "Unix timestamp in milliseconds when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "updatedAt": {
            "type": "integer",
            "minimum": 0,
            "description": "Unix timestamp in milliseconds when this resource was last updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "id",
          "name",
          "revision",
          "rules",
          "createdAt",
          "updatedAt"
        ]
      },
      "platform__AudienceSegmentPreview": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "matchedCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Profiles that match the rules.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "optedOutCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Matched profiles whose number is on the team's opt-out list.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "consentWithheldCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Matched profiles, not opted out, whose latest consent assertion is `allowed: false`. Launch leaves them out.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "eligibleCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Matched profiles a launch now would send to.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "sample": {
            "type": "array",
            "maxItems": 5,
            "description": "Up to five eligible profiles with the phone masked.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `5` items |",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "phone": {
                  "type": "string",
                  "description": "Masked phone, for example `+49*******12`."
                },
                "tags": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "Tags associated with this sample."
                }
              },
              "required": [
                "phone",
                "tags"
              ]
            }
          },
          "evaluatedAt": {
            "type": "integer",
            "minimum": 0,
            "description": "Evaluation time in Unix milliseconds.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "matchedCount",
          "optedOutCount",
          "consentWithheldCount",
          "eligibleCount",
          "sample",
          "evaluatedAt"
        ]
      },
      "platform__CreatePlatformCampaignRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "description": "Campaign name, trimmed before validation. Must not be blank.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `200` characters |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Required when using a team API key. Project tokens derive the project from the credential.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "templateId": {
            "type": "string",
            "format": "uuid",
            "description": "Template in the campaign's project to send instead of composed messages. On Cloud API numbers it must be approved by WhatsApp before launch.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "variableMapping": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__CampaignVariableMapping"
              }
            ],
            "description": "Specifies variable mapping for this platform create platform campaign request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Object size | At most `50` properties |"
          },
          "recipientListId": {
            "type": "string",
            "format": "uuid",
            "description": "Audience in the same team whose members are copied when the campaign launches.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "segmentId": {
            "type": "string",
            "format": "uuid",
            "description": "Beta. Saved audience segment evaluated once when the campaign launches; the matching profiles become its recipients. Cannot be combined with `recipientListId`. Requires a team API key or the dashboard and the audience segments beta.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "senderConfig": {
            "type": "object",
            "additionalProperties": true,
            "description": "Structured sender config values for this platform create platform campaign request."
          },
          "scheduledAt": {
            "type": "number",
            "description": "Scheduled start time in Unix milliseconds."
          },
          "sendWindow": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__CampaignSendWindowRequest"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies send window for this platform create platform campaign request.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `days`, `hours` |\n| Alternative 2 | `null` |"
          },
          "trackedLinks": {
            "type": [
              "array",
              "null"
            ],
            "maxItems": 5,
            "items": {
              "$ref": "#/components/schemas/platform__CampaignTrackedLink"
            },
            "description": "Beta. Links to track, at most 5. Each message reference `{{link:<key>}}` is replaced with a short link per recipient that redirects to `url`. Only campaigns sent from linked-device numbers track links. `null` or `[]` stores none.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `array`; Array size: At most `5` items |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `5` items |"
          },
          "drip": {
            "description": "Beta access is required. Defaults to audience enrollment, exit on reply true and exit on link open false. Null creates an ordinary campaign.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `enrollment`: `audience` or `continuous` |\n| Alternative 2 | `null` |",
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__CampaignDripInput"
                  }
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "frequencyCap": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "description": "Beta. This campaign's own contact frequency cap, counted over every campaign message the team sent to the phone number. Each limit applies together with the team cap and the lower one wins, so a campaign cap can only make sending stricter. A message over a limit is skipped with `frequency_cap_exceeded`; later sequence messages stop for that recipient. `null` uses the team cap alone. Setting a cap requires the contact frequency caps beta and otherwise answers `403 feature_unavailable`.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `maxPer24Hours`, `maxPer7Days` |\n| Alternative 2 | `null` |",
            "properties": {
              "maxPer24Hours": {
                "type": [
                  "integer",
                  "null"
                ],
                "minimum": 1,
                "maximum": 50,
                "description": "Most campaign messages one phone number receives from the team in any rolling 24 hours, 1 to 50. `null` sets no 24-hour limit.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `1` through `50` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `50` (inclusive) |"
              },
              "maxPer7Days": {
                "type": [
                  "integer",
                  "null"
                ],
                "minimum": 1,
                "maximum": 200,
                "description": "Most campaign messages one phone number receives from the team in any rolling 7 days, 1 to 200. `null` sets no 7-day limit. Must not be lower than `maxPer24Hours`.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `1` through `200` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `200` (inclusive) |"
              }
            },
            "required": [
              "maxPer24Hours",
              "maxPer7Days"
            ]
          },
          "followUp": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__CampaignFollowUp"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies follow up for this platform create platform campaign request.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `message` |\n| Alternative 2 | `null` |"
          },
          "recipients": {
            "type": "array",
            "minItems": 0,
            "maxItems": 1000,
            "description": "At most 1,000 recipients per request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `0` through `1000` items |",
            "items": {
              "$ref": "#/components/schemas/platform__RecipientInput"
            }
          },
          "recipientCount": {
            "type": "number",
            "description": "Ignored when inline recipients are provided; their stored count is authoritative."
          },
          "composerBlueprint": {
            "description": "Specifies composer blueprint for this platform create platform campaign request."
          },
          "messagesArray": {
            "type": "array",
            "maxItems": 10,
            "items": {
              "$ref": "#/components/schemas/platform__CampaignMessage"
            },
            "description": "The messages each recipient receives, in order, when the campaign has no `templateId`. With a template, the template is the only message. A message with no text, media, link or call button, footer or Flow form is not sent.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `10` items |"
          },
          "audienceRef": {
            "description": "Specifies audience ref for this platform create platform campaign request."
          },
          "complianceConfig": {
            "description": "Specifies compliance config for this platform create platform campaign request."
          },
          "variants": {
            "type": "array",
            "minItems": 2,
            "maxItems": 4,
            "items": {
              "$ref": "#/components/schemas/platform__CampaignVariant"
            },
            "description": "Two to four messages to test. Requires `variantStrategy` and cannot be combined with `templateId`. A/B tests are a beta; a team that is not enrolled gets `403 feature_unavailable`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `2` through `4` items |"
          },
          "variantStrategy": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__CampaignVariantStrategy"
              }
            ],
            "description": "Specifies variant strategy for this platform create platform campaign request."
          },
          "messageVariations": {
            "description": "Two to five message alternatives for linked-device numbers. Each recipient receives one, chosen by weight, and keeps it across retries. Cannot be combined with composed messages, a template or an A/B test. A beta; a team that is not enrolled gets `403 feature_unavailable`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `2` through `5` items |",
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__CampaignMessageVariations"
              }
            ]
          }
        },
        "required": [
          "name"
        ]
      },
      "platform__CampaignDrip": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "enrollment",
          "exitOnReply",
          "exitOnLinkClick"
        ],
        "description": "Beta drip settings. Defaults: audience enrollment, exit on reply true, exit on link open false. Opt-outs always stop remaining steps. Cannot combine with a template, A/B variants, weighted alternatives or receipt-timed followUp. Linked-device and test numbers only.",
        "properties": {
          "enrollment": {
            "type": "string",
            "enum": [
              "audience",
              "continuous"
            ],
            "default": "audience",
            "description": "Select `audience` for contacts present at launch. Select `continuous` to also accept contacts through the enrollment endpoint while the campaign is running or paused. Setting a continuous drip back to `audience` closes enrollment; the campaign completes after all enrolled contacts finish.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `audience` | Audience. |\n| `continuous` | Continuous. |"
          },
          "exitOnReply": {
            "type": "boolean",
            "default": true,
            "description": "When true, a contact who replies to the sending number gets no further steps."
          },
          "exitOnLinkClick": {
            "type": "boolean",
            "default": false,
            "description": "When true, a GET request to one of the campaign's tracked links stops the contact's remaining steps. HEAD requests do not count. GET requests from link previews and security scanners also count and do not prove that a person clicked."
          }
        }
      },
      "platform__CampaignDripInput": {
        "type": "object",
        "additionalProperties": false,
        "description": "Beta drip settings. Defaults: audience enrollment, exit on reply true, exit on link open false. Opt-outs always stop remaining steps. Cannot combine with a template, A/B variants, weighted alternatives or receipt-timed followUp. Linked-device and test numbers only.",
        "properties": {
          "enrollment": {
            "type": "string",
            "enum": [
              "audience",
              "continuous"
            ],
            "default": "audience",
            "description": "Select `audience` for contacts present at launch. Select `continuous` to also accept contacts through the enrollment endpoint while the campaign is running or paused. Setting a continuous drip back to `audience` closes enrollment; the campaign completes after all enrolled contacts finish.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `audience` | Audience. |\n| `continuous` | Continuous. |"
          },
          "exitOnReply": {
            "type": "boolean",
            "default": true,
            "description": "When true, a contact who replies to the sending number gets no further steps."
          },
          "exitOnLinkClick": {
            "type": "boolean",
            "default": false,
            "description": "When true, a GET request to one of the campaign's tracked links stops the contact's remaining steps. HEAD requests do not count. GET requests from link previews and security scanners also count and do not prove that a person clicked."
          }
        }
      },
      "platform__CampaignDripPatch": {
        "type": "object",
        "additionalProperties": false,
        "description": "Partial drip settings. Omitted fields preserve stored settings. When adding drip to an ordinary draft, omitted fields use the create defaults.",
        "properties": {
          "enrollment": {
            "type": "string",
            "enum": [
              "audience",
              "continuous"
            ],
            "description": "Select `audience` for contacts present at launch. Select `continuous` to also accept contacts through the enrollment endpoint while the campaign is running or paused. Setting a continuous drip back to `audience` closes enrollment; the campaign completes after all enrolled contacts finish.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `audience` | Audience. |\n| `continuous` | Continuous. |"
          },
          "exitOnReply": {
            "type": "boolean",
            "description": "When true, a contact who replies to the sending number gets no further steps."
          },
          "exitOnLinkClick": {
            "type": "boolean",
            "description": "When true, a GET request to one of the campaign's tracked links stops the contact's remaining steps. HEAD requests do not count. GET requests from link previews and security scanners also count and do not prove that a person clicked."
          }
        }
      },
      "platform__CampaignDripStats": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "enrollment": {
            "type": "string",
            "enum": [
              "audience",
              "continuous"
            ],
            "description": "Specifies enrollment for this platform campaign drip stat.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `audience` | Audience. |\n| `continuous` | Continuous. |"
          },
          "enrolled": {
            "type": "integer",
            "description": "Specifies enrolled for this platform campaign drip stat."
          },
          "enrolledByApi": {
            "type": "integer",
            "description": "Specifies enrolled by api for this platform campaign drip stat."
          },
          "active": {
            "type": "integer",
            "description": "Specifies active for this platform campaign drip stat."
          },
          "completed": {
            "type": "integer",
            "description": "Specifies completed for this platform campaign drip stat."
          },
          "exited": {
            "type": "integer",
            "description": "Specifies exited for this platform campaign drip stat."
          },
          "steps": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "step": {
                  "type": "integer",
                  "description": "Specifies step for this step."
                },
                "entered": {
                  "type": "integer",
                  "description": "Specifies entered for this step."
                },
                "waiting": {
                  "type": "integer",
                  "description": "Specifies waiting for this step."
                },
                "sent": {
                  "type": "integer",
                  "description": "Specifies sent for this step."
                },
                "delivered": {
                  "type": "integer",
                  "description": "Specifies delivered for this step."
                },
                "read": {
                  "type": "integer",
                  "description": "Specifies read for this step."
                },
                "replied": {
                  "type": "integer",
                  "description": "Specifies replied for this step."
                },
                "exited": {
                  "type": "integer",
                  "description": "Specifies exited for this step."
                },
                "failed": {
                  "type": "integer",
                  "description": "Specifies failed for this step."
                }
              },
              "required": [
                "step",
                "entered",
                "waiting",
                "sent",
                "delivered",
                "read",
                "replied",
                "exited",
                "failed"
              ]
            },
            "description": "Steps associated with this platform campaign drip stat."
          }
        },
        "required": [
          "enrollment",
          "enrolled",
          "enrolledByApi",
          "active",
          "completed",
          "exited",
          "steps"
        ]
      },
      "platform__EnrollCampaignContactRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "phone"
        ],
        "properties": {
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "phone": {
            "type": "string",
            "minLength": 1,
            "maxLength": 32,
            "description": "International phone number.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `32` characters |"
          },
          "variables": {
            "type": "object",
            "maxProperties": 50,
            "additionalProperties": {
              "oneOf": [
                {
                  "type": "string",
                  "maxLength": 1024
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "description": "Structured variables values for this platform enroll campaign contact request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Object size | At most `50` properties |"
          }
        }
      },
      "platform__CampaignEnrollment": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "campaignId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the campaign.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "recipientId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the recipient.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "phone": {
            "type": "string",
            "description": "Phone number in international format."
          },
          "created": {
            "type": "boolean",
            "description": "Whether created."
          },
          "status": {
            "type": "string",
            "description": "Current status of this resource or operation."
          },
          "enrolledAt": {
            "type": "number",
            "description": "Unix milliseconds."
          }
        },
        "required": [
          "campaignId",
          "recipientId",
          "phone",
          "created",
          "status",
          "enrolledAt"
        ]
      },
      "platform__CampaignMessage": {
        "type": "object",
        "additionalProperties": true,
        "description": "One composed campaign message.",
        "properties": {
          "version": {
            "type": "integer",
            "enum": [
              2
            ],
            "description": "Specifies version for this platform campaign message.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `2` | 2. |"
          },
          "source": {
            "type": "string",
            "description": "Message text. `{{name}}` inserts a recipient variable and `{{name | fallback}}` uses the fallback when the variable is missing or empty. WhatsApp formatting such as `*bold*` is kept."
          },
          "media": {
            "type": "object",
            "additionalProperties": true,
            "required": [
              "kind",
              "url"
            ],
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "image",
                  "video",
                  "audio",
                  "document"
                ],
                "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `image` | Image. |\n| `video` | Video. |\n| `audio` | Audio. |\n| `document` | Document. |"
              },
              "url": {
                "type": "string",
                "format": "uri",
                "description": "Public https URL the sending number downloads the file from. Launch is refused with `400 invalid_parameter` when an attachment has no URL.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
              },
              "filename": {
                "type": "string",
                "description": "Filename presented for the media attachment."
              },
              "caption": {
                "type": "string",
                "description": "Used as the caption when `source` is empty."
              }
            },
            "description": "Reference to the media attached to this message."
          },
          "buttons": {
            "type": "array",
            "description": "On WhatsApp numbers, link and call buttons are sent as text lines and quick replies are left out.",
            "items": {
              "type": "object",
              "additionalProperties": true,
              "required": [
                "kind",
                "label"
              ],
              "properties": {
                "kind": {
                  "type": "string",
                  "enum": [
                    "reply",
                    "link",
                    "call"
                  ],
                  "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `reply` | Reply. |\n| `link` | Link. |\n| `call` | Call. |"
                },
                "label": {
                  "type": "string",
                  "description": "Specifies label for this button."
                },
                "url": {
                  "type": "string",
                  "description": "URL associated with this resource."
                },
                "phone": {
                  "type": "string",
                  "description": "Phone number in international format."
                }
              }
            }
          },
          "footer": {
            "type": "string",
            "description": "Supplementary footer text shown below the primary content."
          },
          "delayUnit": {
            "type": "string",
            "enum": [
              "minutes",
              "hours",
              "days"
            ],
            "description": "Display unit. delayAfterSec must be a whole multiple of this unit.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `minutes` | Minutes. |\n| `hours` | Hours. |\n| `days` | Days. |"
          },
          "sendWindow": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "required": [
              "days",
              "hours"
            ],
            "description": "Drip steps after the first only. Replaces the campaign weekdays and hours for this step, retaining its time zone settings. Without a campaign window, uses the team time zone saved when the drip was configured.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `days`, `hours` |\n| Alternative 2 | `null` |",
            "properties": {
              "days": {
                "type": "array",
                "minItems": 1,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "enum": [
                    "monday",
                    "tuesday",
                    "wednesday",
                    "thursday",
                    "friday",
                    "saturday",
                    "sunday"
                  ]
                },
                "description": "Days associated with this send window.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `monday` | Monday. |\n| `tuesday` | Tuesday. |\n| `wednesday` | Wednesday. |\n| `thursday` | Thursday. |\n| `friday` | Friday. |\n| `saturday` | Saturday. |\n| `sunday` | Sunday. |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At least `1` items |\n| Duplicates | Not accepted; every array item must be unique |"
              },
              "hours": {
                "type": "array",
                "minItems": 1,
                "maxItems": 4,
                "items": {
                  "$ref": "#/components/schemas/platform__CampaignSendWindowRange"
                },
                "description": "Hours associated with this send window.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `4` items |"
              }
            }
          },
          "delayAfterSec": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2592000,
            "description": "A drip allows up to 30 days; other campaigns allow up to 86400 seconds. Minimum seconds between the previous message being accepted by WhatsApp and this message being sent. Ignored on the first message. Pacing, caps and a paused campaign can make the wait longer.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `2592000` (inclusive) |"
          }
        }
      },
      "platform__CampaignVariant": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "key": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_-]{0,15}$",
            "description": "Identifier of the variant, unique in the campaign: a lowercase letter, then up to 15 lowercase letters, digits, `_` or `-`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z][a-z0-9_-]{0,15}$` |",
            "example": "a"
          },
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "Name shown in results, 1 to 100 characters after trimming.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `100` characters |"
          },
          "weight": {
            "type": "integer",
            "minimum": 1,
            "maximum": 99,
            "description": "Share of the test group that receives this variant, in percent. The weights of all variants add up to 100.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `99` (inclusive) |"
          },
          "blueprint": {
            "type": "object",
            "additionalProperties": true,
            "description": "The message this variant sends, in the composed-message format.",
            "properties": {
              "version": {
                "type": "integer",
                "enum": [
                  2
                ],
                "description": "Specifies version for this blueprint.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `2` | 2. |"
              },
              "source": {
                "type": "string",
                "minLength": 1,
                "maxLength": 4096,
                "description": "The message text. `{{variable}}` placeholders are filled per recipient, as in composed messages.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `4096` characters |"
              }
            },
            "required": [
              "version",
              "source"
            ]
          }
        },
        "required": [
          "key",
          "label",
          "weight",
          "blueprint"
        ]
      },
      "platform__CampaignVariantStrategy": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "winnerCriterion": {
            "type": "string",
            "enum": [
              "delivery",
              "read",
              "reply"
            ],
            "description": "The outcome that decides the winner: the share of sent test messages that were delivered, read or replied to by the test deadline.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `delivery` | Delivery. |\n| `read` | Read. |\n| `reply` | Reply. |"
          },
          "holdoutPercent": {
            "type": "integer",
            "minimum": 0,
            "maximum": 30,
            "description": "Percent of recipients who receive no message. They are marked `skipped` with `lastError` `experiment_holdout` at launch.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `30` (inclusive) |"
          },
          "testSlicePercent": {
            "type": "integer",
            "minimum": 5,
            "maximum": 50,
            "default": 20,
            "description": "Percent of recipients who receive a variant during the test. The rest, the reserve, wait for the winner.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `5` through `50` (inclusive) |"
          },
          "autoPromote": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Must be `true`: after the test window the winner is sent to the reserve automatically.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "testWindowMinutes": {
            "type": "integer",
            "minimum": 15,
            "maximum": 1440,
            "description": "Minutes from the start of sending until the test is decided.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `15` through `1440` (inclusive) |"
          }
        },
        "required": [
          "winnerCriterion",
          "holdoutPercent",
          "autoPromote",
          "testWindowMinutes"
        ]
      },
      "platform__PlatformCampaignAnalytics": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "campaignId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the campaign.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "recipientCount": {
            "type": "integer",
            "description": "Number of recipients."
          },
          "sentCount": {
            "type": "integer",
            "description": "Number of sents."
          },
          "deliveredCount": {
            "type": "integer",
            "description": "Number of delivereds."
          },
          "readCount": {
            "type": "integer",
            "description": "Number of reads."
          },
          "failedCount": {
            "type": "integer",
            "description": "Number of faileds."
          },
          "skippedCount": {
            "type": "integer",
            "description": "Number of skippeds."
          },
          "respondedCount": {
            "type": "integer",
            "description": "Number of respondeds."
          },
          "responseRate": {
            "type": "number",
            "description": "`respondedCount` divided by `sentCount`; 0 before the first send."
          },
          "averageResponseTimeMs": {
            "type": [
              "number",
              "null"
            ],
            "description": "Mean time from send to first reply in milliseconds; null before the first reply.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "minResponseTimeMs": {
            "type": [
              "number",
              "null"
            ],
            "description": "Specifies min response time ms for this platform platform campaign analytic.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "maxResponseTimeMs": {
            "type": [
              "number",
              "null"
            ],
            "description": "Specifies max response time ms for this platform platform campaign analytic.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "experiment": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "description": "A/B results by variant; null for a broadcast. The decision counts only results received by the test deadline, so `outcomeRate` can differ from the rate the decision used.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `criterion`: `delivery` or `read` or `reply`; Required fields: `criterion`, `outcome`, `holdoutCount`, `reserveCount`, `variants` |\n| Alternative 2 | `null` |",
            "properties": {
              "criterion": {
                "type": "string",
                "enum": [
                  "delivery",
                  "read",
                  "reply"
                ],
                "description": "Specifies criterion for this experiment.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `delivery` | Delivery. |\n| `read` | Read. |\n| `reply` | Reply. |"
              },
              "outcome": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "description": "The saved A/B result. `promoted` names the variant sent to the reserve. `inconclusive` means the test paused the campaign with the reserve unsent; the campaign cannot resume, so stop it or duplicate it.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `state`: `promoted` or `inconclusive`; Field `reason`: `insufficient_evidence`; Required fields: `state` |\n| Alternative 2 | `null` |",
                "properties": {
                  "state": {
                    "type": "string",
                    "enum": [
                      "promoted",
                      "inconclusive"
                    ],
                    "description": "Current lifecycle state of this resource.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `promoted` | Promoted. |\n| `inconclusive` | Inconclusive. |"
                  },
                  "winnerKey": {
                    "type": "string",
                    "description": "The winning variant's `key`; only when `state` is `promoted`."
                  },
                  "reason": {
                    "type": "string",
                    "enum": [
                      "insufficient_evidence"
                    ],
                    "description": "Only when `state` is `inconclusive`.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `insufficient_evidence` | Insufficient evidence. |"
                  }
                },
                "required": [
                  "state"
                ]
              },
              "holdoutCount": {
                "type": "integer",
                "description": "Recipients held out; they receive no message."
              },
              "reserveCount": {
                "type": "integer",
                "description": "Recipients who wait for the winner."
              },
              "variants": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "key": {
                      "type": "string",
                      "description": "Specifies key for this variant."
                    },
                    "label": {
                      "type": "string",
                      "description": "Specifies label for this variant."
                    },
                    "weight": {
                      "type": "integer",
                      "description": "Specifies weight for this variant."
                    },
                    "assigned": {
                      "type": "integer",
                      "description": "Test recipients assigned this variant."
                    },
                    "sent": {
                      "type": "integer",
                      "description": "Specifies sent for this variant."
                    },
                    "delivered": {
                      "type": "integer",
                      "description": "Specifies delivered for this variant."
                    },
                    "read": {
                      "type": "integer",
                      "description": "Specifies read for this variant."
                    },
                    "replied": {
                      "type": "integer",
                      "description": "Specifies replied for this variant."
                    },
                    "outcomeRate": {
                      "type": "number",
                      "description": "The `criterion` count divided by `sent`, counting every result received so far."
                    }
                  },
                  "required": [
                    "key",
                    "label",
                    "weight",
                    "assigned",
                    "sent",
                    "delivered",
                    "read",
                    "replied",
                    "outcomeRate"
                  ]
                },
                "description": "Variants associated with this experiment."
              }
            },
            "required": [
              "criterion",
              "outcome",
              "holdoutCount",
              "reserveCount",
              "variants"
            ]
          },
          "drip": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__CampaignDripStats"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies drip for this platform platform campaign analytic.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `enrollment`: `audience` or `continuous`; Required fields: `enrollment`, `enrolled`, `enrolledByApi`, `active`, `completed`, `exited`, `steps` |\n| Alternative 2 | `null` |"
          },
          "frequencyCap": {
            "type": "object",
            "additionalProperties": false,
            "description": "Recipients with a message skipped by the contact frequency cap.",
            "properties": {
              "skippedRecipientCount": {
                "type": "integer",
                "minimum": 0,
                "description": "Recipients whose first, sequence or follow-up message was skipped by the cap.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              }
            },
            "required": [
              "skippedRecipientCount"
            ]
          },
          "followUps": {
            "description": "Follow-up outcomes, counted separately from the first message. All zero when the campaign has no follow-up.",
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__CampaignFollowUpReport"
              }
            ]
          }
        },
        "required": [
          "campaignId",
          "recipientCount",
          "sentCount",
          "deliveredCount",
          "readCount",
          "failedCount",
          "skippedCount",
          "respondedCount",
          "responseRate",
          "averageResponseTimeMs",
          "minResponseTimeMs",
          "maxResponseTimeMs",
          "experiment",
          "followUps",
          "drip",
          "frequencyCap"
        ]
      },
      "platform__CampaignVariableMapping": {
        "type": "object",
        "maxProperties": 50,
        "description": "How each `{{variable}}` in the campaign's template or composed messages is filled, keyed by the variable name used in the content. A variable is filled from the recipient's value, then `fallback`, then an inline `{{name | fallback}}` written in a composed message. A recipient with none of them is refused at launch (`422 campaign_variables_missing`) or, when launched with `skipMissingVariables`, skipped with `missing_variable`.",
        "additionalProperties": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "source": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.-]{0,63}$",
              "description": "Recipient variable that fills this variable, for example a column mapped when the audience was imported. Defaults to the recipient variable with the same name.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9_][A-Za-z0-9_.-]{0,63}$` |"
            },
            "fallback": {
              "type": "string",
              "minLength": 1,
              "maxLength": 1024,
              "pattern": "\\S",
              "description": "Sent when a recipient has no value for the source variable, or only whitespace. Must not be blank.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `1024` characters |\n| Pattern | `\\S` |"
            }
          }
        }
      },
      "platform__PlatformCampaignReplyFlowDefinition": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "entryNodeId",
          "nodes"
        ],
        "description": "An acyclic graph of 2 to 12 steps. The entry step waits for the first reply and sends nothing. See the reply flows guide for step and branch shapes.",
        "properties": {
          "entryNodeId": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$",
            "description": "Identifier for the entry node.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$` |"
          },
          "nodes": {
            "type": "array",
            "minItems": 2,
            "maxItems": 12,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "edges"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$",
                  "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$` |"
                },
                "send": {
                  "type": "object",
                  "required": [
                    "kind"
                  ],
                  "additionalProperties": true,
                  "description": "`text` (`text`), `buttons` (`body`, up to 3 `buttons` with `id` and `text`), `list` (`body`, `buttonText`, up to 10 `rows`), or `flow_form` (`flowId`, `body`, `buttonText`, `screen`; Official numbers only).",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "enum": [
                        "text",
                        "buttons",
                        "list",
                        "flow_form"
                      ],
                      "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `text` | Text. |\n| `buttons` | Buttons. |\n| `list` | List. |\n| `flow_form` | Flow form. |"
                    }
                  }
                },
                "edges": {
                  "type": "array",
                  "maxItems": 3,
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "match",
                      "to"
                    ],
                    "properties": {
                      "match": {
                        "type": "object",
                        "required": [
                          "kind"
                        ],
                        "additionalProperties": true,
                        "description": "`choice` (`replyKind` `button` or `list`, `id`), `keyword` (`value`), or `flow_submission`.",
                        "properties": {
                          "kind": {
                            "type": "string",
                            "enum": [
                              "choice",
                              "keyword",
                              "flow_submission"
                            ],
                            "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `choice` | Choice. |\n| `keyword` | Keyword. |\n| `flow_submission` | Flow submission. |"
                          }
                        }
                      },
                      "to": {
                        "type": "string",
                        "description": "Specifies to for this edge."
                      }
                    }
                  },
                  "description": "Edges associated with this node.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `3` items |"
                }
              }
            },
            "description": "Nodes associated with this platform platform campaign reply flow definition.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `2` through `12` items |"
          }
        }
      },
      "platform__PlatformCampaignReplyFlow": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "flowKey",
          "revision",
          "name",
          "definition",
          "createdAt"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "flowKey": {
            "type": "string",
            "format": "uuid",
            "description": "Groups the revisions of one reply flow.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "revision": {
            "type": "integer",
            "description": "Specifies revision for this platform platform campaign reply flow."
          },
          "name": {
            "type": "string",
            "description": "Human-readable name for this resource."
          },
          "definition": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformCampaignReplyFlowDefinition"
              }
            ],
            "description": "Structured definition for this resource."
          },
          "createdAt": {
            "type": "integer",
            "description": "Unix milliseconds."
          }
        }
      },
      "platform__CreatePlatformCampaignReplyFlowRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name",
          "definition"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          },
          "flowKey": {
            "type": "string",
            "format": "uuid",
            "description": "Existing flow key to add a revision to. Omit to start a new reply flow.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "revision": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000000,
            "description": "Defaults to 1; each key and revision can be created once.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `1000000` (inclusive) |"
          },
          "definition": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformCampaignReplyFlowDefinition"
              }
            ],
            "description": "Structured definition for this resource."
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Required when using a team API key. Project tokens derive the project from the credential.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        }
      },
      "platform__SetPlatformCampaignReplyFlowRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "replyFlowId"
        ],
        "properties": {
          "replyFlowId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Reply flow revision to run after replies, or null to detach it.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Required when using a team API key. Project tokens derive the project from the credential.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        }
      },
      "platform__CampaignMessageVariations": {
        "type": "array",
        "minItems": 2,
        "maxItems": 5,
        "items": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "key": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,15}$",
              "description": "Identifier of the alternative, unique in the campaign.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z][a-z0-9_-]{0,15}$` |"
            },
            "weight": {
              "type": "integer",
              "minimum": 1,
              "maximum": 99,
              "description": "Share of recipients who receive this alternative, in percent. The weights add up to 100.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `99` (inclusive) |"
            },
            "blueprint": {
              "type": "object",
              "required": [
                "version",
                "source"
              ],
              "properties": {
                "version": {
                  "type": "integer",
                  "enum": [
                    2
                  ],
                  "description": "Specifies version for this blueprint.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `2` | 2. |"
                },
                "source": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 4096,
                  "description": "Specifies source for this blueprint.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `4096` characters |"
                }
              },
              "additionalProperties": true,
              "description": "Structured blueprint values for this platform campaign message variation."
            }
          },
          "required": [
            "key",
            "weight",
            "blueprint"
          ]
        }
      },
      "platform__UpdatePlatformCampaignRequest": {
        "type": "object",
        "additionalProperties": true,
        "description": "Fields to change. Omitted fields keep their stored value.",
        "properties": {
          "drip": {
            "description": "Omitted fields preserve stored settings. Null makes the draft an ordinary campaign. Closing continuous enrollment with unchanged exit flags is allowed without beta access when it is the only change.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `enrollment`: `audience` or `continuous` |\n| Alternative 2 | `null` |",
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__CampaignDripPatch"
                  }
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `200` characters |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Required when using a team API key. Project tokens derive the project from the credential.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "templateId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Template in the campaign project, or null to send composed messages. Only while the campaign is an unlaunched draft.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "variableMapping": {
            "type": [
              "object",
              "null"
            ],
            "maxProperties": 50,
            "description": "Replaces the whole mapping; null clears it. Only while the campaign is an unlaunched draft.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Object size: At most `50` properties |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Object size | At most `50` properties |",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "source": {
                  "type": "string",
                  "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.-]{0,63}$",
                  "description": "Recipient variable that fills this variable, for example a column mapped when the audience was imported. Defaults to the recipient variable with the same name.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9_][A-Za-z0-9_.-]{0,63}$` |"
                },
                "fallback": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 1024,
                  "pattern": "\\S",
                  "description": "Sent when a recipient has no value for the source variable, or only whitespace. Must not be blank.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `1024` characters |\n| Pattern | `\\S` |"
                }
              }
            }
          },
          "recipientListId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Audience to send to. Only while the campaign is an unlaunched draft. Setting an audience clears `segmentId`.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "segmentId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Beta. Saved audience segment to evaluate at launch, or null to clear it. Only while the campaign is an unlaunched draft. Setting a segment clears `recipientListId`; sending both answers `400`. Requires a team API key or the dashboard and the audience segments beta.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "senderConfig": {
            "type": "object",
            "additionalProperties": true,
            "description": "Structured sender config values for this platform update platform campaign request."
          },
          "scheduledAt": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 8640000000000000,
            "description": "Scheduled start time in Unix milliseconds. Only while the campaign is an unlaunched draft.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` through `8640000000000000` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `8640000000000000` (inclusive) |"
          },
          "followUp": {
            "description": "Only editable before launch. Null removes the optional follow-up.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `message` |\n| Alternative 2 | `null` |",
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__CampaignFollowUp"
                  }
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "sendWindow": {
            "description": "When the campaign may send. `null` removes the window. Only while the campaign is a draft or paused.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `days`, `hours` |\n| Alternative 2 | `null` |",
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__CampaignSendWindowRequest"
                  }
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "trackedLinks": {
            "type": [
              "array",
              "null"
            ],
            "maxItems": 5,
            "items": {
              "$ref": "#/components/schemas/platform__CampaignTrackedLink"
            },
            "description": "Beta. Replaces the tracked links, at most 5. `null` or `[]` removes them. Only while the campaign is a draft, including while it waits for a scheduled start.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `array`; Array size: At most `5` items |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `5` items |"
          },
          "frequencyCap": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "description": "Beta. Replaces this campaign's own contact frequency cap; `null` removes it and leaves the team cap. Only while the campaign is a draft or paused; a running campaign answers `409`, so pause it first. Setting a cap requires the contact frequency caps beta; removing one does not.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `maxPer24Hours`, `maxPer7Days` |\n| Alternative 2 | `null` |",
            "properties": {
              "maxPer24Hours": {
                "type": [
                  "integer",
                  "null"
                ],
                "minimum": 1,
                "maximum": 50,
                "description": "Most campaign messages one phone number receives from the team in any rolling 24 hours, 1 to 50. `null` sets no 24-hour limit.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `1` through `50` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `50` (inclusive) |"
              },
              "maxPer7Days": {
                "type": [
                  "integer",
                  "null"
                ],
                "minimum": 1,
                "maximum": 200,
                "description": "Most campaign messages one phone number receives from the team in any rolling 7 days, 1 to 200. `null` sets no 7-day limit. Must not be lower than `maxPer24Hours`.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `1` through `200` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `200` (inclusive) |"
              }
            },
            "required": [
              "maxPer24Hours",
              "maxPer7Days"
            ]
          },
          "recipientCount": {
            "type": "number",
            "description": "Number of recipients."
          },
          "composerBlueprint": {
            "description": "Specifies composer blueprint for this platform update platform campaign request."
          },
          "messagesArray": {
            "type": "array",
            "maxItems": 10,
            "items": {
              "$ref": "#/components/schemas/platform__CampaignMessage"
            },
            "description": "Replaces the messages each recipient receives, in order, with the same rules as create. Only while the campaign is an unlaunched draft.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `10` items |"
          },
          "audienceRef": {
            "description": "Specifies audience ref for this platform update platform campaign request."
          },
          "complianceConfig": {
            "description": "Specifies compliance config for this platform update platform campaign request."
          },
          "variants": {
            "type": [
              "array",
              "null"
            ],
            "minItems": 2,
            "maxItems": 4,
            "items": {
              "$ref": "#/components/schemas/platform__CampaignVariant"
            },
            "description": "Replaces the A/B variants. `null`, together with a null `variantStrategy`, makes the draft a broadcast. Only while the campaign is an unlaunched draft.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `array`; Array size: `2` through `4` items |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `2` through `4` items |"
          },
          "variantStrategy": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "properties": {
              "winnerCriterion": {
                "type": "string",
                "enum": [
                  "delivery",
                  "read",
                  "reply"
                ],
                "description": "The outcome that decides the winner: the share of sent test messages that were delivered, read or replied to by the test deadline.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `delivery` | Delivery. |\n| `read` | Read. |\n| `reply` | Reply. |"
              },
              "holdoutPercent": {
                "type": "integer",
                "minimum": 0,
                "maximum": 30,
                "description": "Percent of recipients who receive no message. They are marked `skipped` with `lastError` `experiment_holdout` at launch.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `30` (inclusive) |"
              },
              "testSlicePercent": {
                "type": "integer",
                "minimum": 5,
                "maximum": 50,
                "default": 20,
                "description": "Percent of recipients who receive a variant during the test. The rest, the reserve, wait for the winner.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `5` through `50` (inclusive) |"
              },
              "autoPromote": {
                "type": "boolean",
                "enum": [
                  true
                ],
                "description": "Must be `true`: after the test window the winner is sent to the reserve automatically.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
              },
              "testWindowMinutes": {
                "type": "integer",
                "minimum": 15,
                "maximum": 1440,
                "description": "Minutes from the start of sending until the test is decided.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `15` through `1440` (inclusive) |"
              }
            },
            "required": [
              "winnerCriterion",
              "holdoutPercent",
              "autoPromote",
              "testWindowMinutes"
            ],
            "description": "Replaces how the A/B test runs. Only while the campaign is an unlaunched draft.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `winnerCriterion`: `delivery` or `read` or `reply`; Field `autoPromote`: `true`; Required fields: `winnerCriterion`, `holdoutPercent`, `autoPromote`, `testWindowMinutes` |\n| Alternative 2 | `null` |"
          },
          "messageVariations": {
            "type": [
              "array",
              "null"
            ],
            "minItems": 2,
            "maxItems": 5,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "key": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,15}$",
                  "description": "Identifier of the alternative, unique in the campaign.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z][a-z0-9_-]{0,15}$` |"
                },
                "weight": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 99,
                  "description": "Share of recipients who receive this alternative, in percent. The weights add up to 100.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `99` (inclusive) |"
                },
                "blueprint": {
                  "type": "object",
                  "required": [
                    "version",
                    "source"
                  ],
                  "properties": {
                    "version": {
                      "type": "integer",
                      "enum": [
                        2
                      ],
                      "description": "Specifies version for this blueprint.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `2` | 2. |"
                    },
                    "source": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 4096,
                      "description": "Specifies source for this blueprint.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `4096` characters |"
                    }
                  },
                  "additionalProperties": true,
                  "description": "Structured blueprint values for this message variation."
                }
              },
              "required": [
                "key",
                "weight",
                "blueprint"
              ]
            },
            "description": "Replaces the weighted linked-device alternatives; null clears them. Only while the campaign is an unlaunched draft.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `array`; Array size: `2` through `5` items |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `2` through `5` items |"
          }
        }
      },
      "platform__LaunchPlatformCampaignRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Required when using a team API key. Project tokens derive the project from the credential.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "scheduledAt": {
            "type": "number",
            "description": "Scheduled start time in Unix milliseconds. Defaults to the stored start time, or now."
          },
          "skipMissingVariables": {
            "type": "boolean",
            "description": "Launch even when some recipients have no value and no fallback for a variable. Those recipients are skipped with `failureReason` `missing_variable` before the first send. Without it, such a launch answers `422 campaign_variables_missing`."
          }
        }
      },
      "platform__CampaignTrackedLink": {
        "type": "object",
        "additionalProperties": false,
        "description": "A named destination that campaign messages reference as `{{link:<key>}}`.",
        "properties": {
          "key": {
            "type": "string",
            "pattern": "^[a-z0-9_]{1,32}$",
            "description": "Name the message uses as `{{link:<key>}}`. Unique within the campaign.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z0-9_]{1,32}$` |",
            "example": "offer"
          },
          "url": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2048,
            "description": "Destination: an absolute `https` URL with a public domain name. No user name, password or IP address.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `2048` characters |",
            "example": "https://example.com/spring-sale"
          }
        },
        "required": [
          "key",
          "url"
        ]
      },
      "platform__CampaignTrackedLinkReport": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "key": {
            "type": "string",
            "description": "Tracked link key.",
            "example": "offer"
          },
          "url": {
            "type": "string",
            "description": "Destination of the tracked link."
          },
          "uniqueOpens": {
            "type": "integer",
            "minimum": 0,
            "description": "Recipients who opened the link at least once.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "totalOpens": {
            "type": "integer",
            "minimum": 0,
            "description": "Every recorded open, including repeat opens.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "key",
          "url",
          "uniqueOpens",
          "totalOpens"
        ]
      },
      "platform__CampaignSendWindowRange": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "start": {
            "type": "string",
            "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$",
            "description": "Local start time, `HH:MM` in 24-hour time, inclusive.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^([01][0-9]\\|2[0-3]):[0-5][0-9]$` |",
            "example": "09:00"
          },
          "end": {
            "type": "string",
            "pattern": "^(([01][0-9]|2[0-3]):[0-5][0-9]|24:00)$",
            "description": "Local end time, `HH:MM` in 24-hour time or `24:00`, exclusive. Must be later than `start`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^(([01][0-9]\\|2[0-3]):[0-5][0-9]\\|24:00)$` |",
            "example": "18:00"
          }
        },
        "required": [
          "start",
          "end"
        ]
      },
      "platform__CampaignSendWindowRequest": {
        "type": "object",
        "additionalProperties": false,
        "description": "When the campaign may send. Recipients outside the window stay `queued` and are sent when it next opens.",
        "properties": {
          "timeZone": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "IANA time zone the window is written in, such as `America/Sao_Paulo`. When omitted, the team's time zone is stored, or `UTC` when the team has none.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |",
            "example": "America/Sao_Paulo"
          },
          "days": {
            "type": "array",
            "minItems": 1,
            "maxItems": 7,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "enum": [
                "monday",
                "tuesday",
                "wednesday",
                "thursday",
                "friday",
                "saturday",
                "sunday"
              ]
            },
            "description": "Weekdays the campaign may send on, in the window's time zone.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `monday` | Monday. |\n| `tuesday` | Tuesday. |\n| `wednesday` | Wednesday. |\n| `thursday` | Thursday. |\n| `friday` | Friday. |\n| `saturday` | Saturday. |\n| `sunday` | Sunday. |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `7` items |\n| Duplicates | Not accepted; every array item must be unique |"
          },
          "hours": {
            "type": "array",
            "minItems": 1,
            "maxItems": 4,
            "items": {
              "$ref": "#/components/schemas/platform__CampaignSendWindowRange"
            },
            "description": "Local time ranges the campaign may send in on those days. Ranges must not overlap. A range cannot cross midnight; use two ranges instead.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `4` items |"
          },
          "recipientTimeZone": {
            "type": "boolean",
            "default": false,
            "description": "Evaluate the window in each recipient's own time zone. The zone comes from the recipient variable named by `timeZoneVariable` when it holds a valid IANA zone, otherwise from the phone number's country when that country uses one UTC offset, otherwise `timeZone`."
          },
          "timeZoneVariable": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.-]{0,63}$",
            "default": "timeZone",
            "description": "Recipient variable holding the recipient's IANA time zone, used when `recipientTimeZone` is true. Launch rejects more than 5,000 distinct nonempty values with `400 invalid_parameter`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9_][A-Za-z0-9_.-]{0,63}$` |"
          }
        },
        "required": [
          "days",
          "hours"
        ]
      },
      "platform__CampaignSendWindow": {
        "type": "object",
        "additionalProperties": false,
        "description": "When the campaign may send. Recipients outside the window stay `queued` and are sent when it next opens.",
        "properties": {
          "timeZone": {
            "type": "string",
            "description": "IANA time zone the window is written in."
          },
          "days": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "monday",
                "tuesday",
                "wednesday",
                "thursday",
                "friday",
                "saturday",
                "sunday"
              ]
            },
            "description": "Days associated with this platform campaign send window.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `monday` | Monday. |\n| `tuesday` | Tuesday. |\n| `wednesday` | Wednesday. |\n| `thursday` | Thursday. |\n| `friday` | Friday. |\n| `saturday` | Saturday. |\n| `sunday` | Sunday. |"
          },
          "hours": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/platform__CampaignSendWindowRange"
            },
            "description": "Hours associated with this platform campaign send window."
          },
          "recipientTimeZone": {
            "type": "boolean",
            "description": "Whether recipient time zone."
          },
          "timeZoneVariable": {
            "type": "string",
            "description": "Specifies time zone variable for this platform campaign send window."
          }
        },
        "required": [
          "timeZone",
          "days",
          "hours",
          "recipientTimeZone",
          "timeZoneVariable"
        ]
      },
      "platform__PlatformCampaign": {
        "type": "object",
        "additionalProperties": true,
        "description": "A campaign returned by Platform list, get, create and update. `sendWindow` is null when sending is unrestricted by local hours.",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "name": {
            "type": "string",
            "description": "Human-readable name for this resource."
          },
          "status": {
            "type": "string",
            "description": "Current status of this resource or operation."
          },
          "templateId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Identifier of the message template.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "recipientListId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Identifier for the recipient list.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "recipientCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of recipients.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "sentCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of sents.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "deliveredCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of delivereds.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "readCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of reads.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "failedCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of faileds.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "skippedCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of skippeds.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "scheduledAt": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Scheduled start in Unix milliseconds.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
          },
          "launchedAt": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Launch time in Unix milliseconds.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
          },
          "completedAt": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Completion time in Unix milliseconds.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
          },
          "createdAt": {
            "type": "integer",
            "description": "Creation time in Unix milliseconds."
          },
          "updatedAt": {
            "type": "integer",
            "description": "Last update in Unix milliseconds."
          },
          "sendWindow": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__CampaignSendWindow"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies send window for this platform platform campaign.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `timeZone`, `days`, `hours`, `recipientTimeZone`, `timeZoneVariable` |\n| Alternative 2 | `null` |"
          },
          "trackedLinks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/platform__CampaignTrackedLink"
            },
            "description": "Tracked links the messages reference as `{{link:<key>}}`. Empty when the campaign tracks none."
          },
          "variableMapping": {
            "type": [
              "object",
              "null"
            ],
            "maxProperties": 50,
            "description": "How each content variable is filled; null when the campaign has no mapping.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Object size: At most `50` properties |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Object size | At most `50` properties |",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "source": {
                  "type": "string",
                  "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.-]{0,63}$",
                  "description": "Recipient variable that fills this variable, for example a column mapped when the audience was imported. Defaults to the recipient variable with the same name.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9_][A-Za-z0-9_.-]{0,63}$` |"
                },
                "fallback": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 1024,
                  "pattern": "\\S",
                  "description": "Sent when a recipient has no value for the source variable, or only whitespace. Must not be blank.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `1024` characters |\n| Pattern | `\\S` |"
                }
              }
            }
          },
          "drip": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__CampaignDrip"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies drip for this platform platform campaign.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `enrollment`: `audience` or `continuous`; Required fields: `enrollment`, `exitOnReply`, `exitOnLinkClick` |\n| Alternative 2 | `null` |"
          },
          "enrollmentOpen": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether the drip is configured for continuous enrollment. Null for a non-drip. Enrollment also requires running or paused status.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `boolean` |\n| Alternative 2 | `null` |"
          },
          "pauseReason": {
            "type": [
              "string",
              "null"
            ],
            "description": "Current stored pause reason while paused; null when unavailable, for a manual pause without a reason, or for any other status.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "followUp": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__CampaignFollowUp"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies follow up for this platform platform campaign.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `message` |\n| Alternative 2 | `null` |"
          },
          "composerBlueprint": {
            "description": "Specifies composer blueprint for this platform platform campaign."
          },
          "messages": {
            "description": "Specifies messages for this platform platform campaign."
          },
          "audienceRef": {
            "description": "Specifies audience ref for this platform platform campaign."
          },
          "senderConfig": {
            "description": "Specifies sender config for this platform platform campaign."
          },
          "complianceConfig": {
            "description": "Specifies compliance config for this platform platform campaign."
          },
          "variants": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/platform__CampaignVariant"
            },
            "description": "The A/B variants; null for a broadcast.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `array` |\n| Alternative 2 | `null` |"
          },
          "variantStrategy": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "properties": {
              "winnerCriterion": {
                "type": "string",
                "enum": [
                  "delivery",
                  "read",
                  "reply"
                ],
                "description": "The outcome that decides the winner: the share of sent test messages that were delivered, read or replied to by the test deadline.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `delivery` | Delivery. |\n| `read` | Read. |\n| `reply` | Reply. |"
              },
              "holdoutPercent": {
                "type": "integer",
                "minimum": 0,
                "maximum": 30,
                "description": "Percent of recipients who receive no message. They are marked `skipped` with `lastError` `experiment_holdout` at launch.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `30` (inclusive) |"
              },
              "testSlicePercent": {
                "type": "integer",
                "minimum": 5,
                "maximum": 50,
                "default": 20,
                "description": "Percent of recipients who receive a variant during the test. The rest, the reserve, wait for the winner.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `5` through `50` (inclusive) |"
              },
              "autoPromote": {
                "type": "boolean",
                "enum": [
                  true
                ],
                "description": "Must be `true`: after the test window the winner is sent to the reserve automatically.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
              },
              "testWindowMinutes": {
                "type": "integer",
                "minimum": 15,
                "maximum": 1440,
                "description": "Minutes from the start of sending until the test is decided.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `15` through `1440` (inclusive) |"
              }
            },
            "required": [
              "winnerCriterion",
              "holdoutPercent",
              "autoPromote",
              "testWindowMinutes"
            ],
            "description": "How the A/B test runs; null for a broadcast.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `winnerCriterion`: `delivery` or `read` or `reply`; Field `autoPromote`: `true`; Required fields: `winnerCriterion`, `holdoutPercent`, `autoPromote`, `testWindowMinutes` |\n| Alternative 2 | `null` |"
          },
          "experimentOutcome": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "description": "The saved A/B result, or null before a decision and for a broadcast.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `state`: `promoted` or `inconclusive`; Field `reason`: `insufficient_evidence`; Required fields: `state` |\n| Alternative 2 | `null` |",
            "properties": {
              "state": {
                "type": "string",
                "enum": [
                  "promoted",
                  "inconclusive"
                ],
                "description": "Current lifecycle state of this resource.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `promoted` | Promoted. |\n| `inconclusive` | Inconclusive. |"
              },
              "winnerKey": {
                "type": "string",
                "description": "The winning variant's `key`; only when `state` is `promoted`."
              },
              "reason": {
                "type": "string",
                "enum": [
                  "insufficient_evidence"
                ],
                "description": "Only when `state` is `inconclusive`.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `insufficient_evidence` | Insufficient evidence. |"
              }
            },
            "required": [
              "state"
            ]
          },
          "messageVariations": {
            "type": [
              "array",
              "null"
            ],
            "minItems": 2,
            "maxItems": 5,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "key": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,15}$",
                  "description": "Identifier of the alternative, unique in the campaign.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z][a-z0-9_-]{0,15}$` |"
                },
                "weight": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 99,
                  "description": "Share of recipients who receive this alternative, in percent. The weights add up to 100.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `99` (inclusive) |"
                },
                "blueprint": {
                  "type": "object",
                  "required": [
                    "version",
                    "source"
                  ],
                  "properties": {
                    "version": {
                      "type": "integer",
                      "enum": [
                        2
                      ],
                      "description": "Specifies version for this blueprint.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `2` | 2. |"
                    },
                    "source": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 4096,
                      "description": "Specifies source for this blueprint.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `4096` characters |"
                    }
                  },
                  "additionalProperties": true,
                  "description": "Structured blueprint values for this message variation."
                }
              },
              "required": [
                "key",
                "weight",
                "blueprint"
              ]
            },
            "description": "Weighted message alternatives, or null when the campaign sends one message.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `array`; Array size: `2` through `5` items |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `2` through `5` items |"
          },
          "segmentId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Saved audience segment the campaign evaluates at launch, or null.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "segmentSnapshot": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "description": "What launch froze from the segment: its revision, the evaluation time in Unix milliseconds and the matching profile count. Null before a segment launch.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `revision`, `evaluatedAt`, `matchedCount` |\n| Alternative 2 | `null` |",
            "properties": {
              "revision": {
                "type": "integer",
                "minimum": 1,
                "description": "Segment revision that launch evaluated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
              },
              "evaluatedAt": {
                "type": "integer",
                "minimum": 0,
                "description": "Time launch evaluated the segment, in Unix milliseconds.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              },
              "matchedCount": {
                "type": "integer",
                "minimum": 0,
                "description": "Profiles that matched at launch, before opt-outs and withheld consent were removed.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              }
            },
            "required": [
              "revision",
              "evaluatedAt",
              "matchedCount"
            ]
          },
          "frequencyCap": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "description": "This campaign's own contact frequency cap; null when only the team cap applies.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `maxPer24Hours`, `maxPer7Days` |\n| Alternative 2 | `null` |",
            "properties": {
              "maxPer24Hours": {
                "type": [
                  "integer",
                  "null"
                ],
                "minimum": 1,
                "maximum": 50,
                "description": "Most campaign messages one phone number receives from the team in any rolling 24 hours, 1 to 50. `null` sets no 24-hour limit.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `1` through `50` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `50` (inclusive) |"
              },
              "maxPer7Days": {
                "type": [
                  "integer",
                  "null"
                ],
                "minimum": 1,
                "maximum": 200,
                "description": "Most campaign messages one phone number receives from the team in any rolling 7 days, 1 to 200. `null` sets no 7-day limit. Must not be lower than `maxPer24Hours`.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `1` through `200` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `200` (inclusive) |"
              }
            },
            "required": [
              "maxPer24Hours",
              "maxPer7Days"
            ]
          }
        },
        "required": [
          "id",
          "name",
          "status",
          "templateId",
          "recipientListId",
          "recipientCount",
          "sentCount",
          "deliveredCount",
          "readCount",
          "failedCount",
          "skippedCount",
          "scheduledAt",
          "launchedAt",
          "completedAt",
          "createdAt",
          "updatedAt",
          "sendWindow",
          "trackedLinks",
          "experimentOutcome",
          "frequencyCap",
          "followUp",
          "drip",
          "enrollmentOpen",
          "pauseReason"
        ]
      },
      "platform__ReschedulePlatformCampaignRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "scheduledAt": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 1,
            "maximum": 8640000000000000,
            "description": "The new start time in Unix milliseconds. `null`, or a time that is not in the future, starts the campaign now.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `1` through `8640000000000000` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `8640000000000000` (inclusive) |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Required when using a team API key. Project tokens derive the project from the credential.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        },
        "required": [
          "scheduledAt"
        ]
      },
      "platform__CreateAudienceRequest": {
        "type": "object",
        "additionalProperties": false,
        "description": "Send either `members` or `fileId` with `mapping`, not both.",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `200` characters |"
          },
          "source": {
            "type": "string",
            "enum": [
              "csv",
              "manual",
              "api"
            ],
            "description": "Defaults to `csv` with `fileId`, otherwise `manual`.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `csv` | Csv. |\n| `manual` | Manual. |\n| `api` | Api. |"
          },
          "members": {
            "type": "array",
            "maxItems": 1000,
            "items": {
              "$ref": "#/components/schemas/platform__RecipientInput"
            },
            "description": "Members associated with this platform create audience request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `1000` items |"
          },
          "fileId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "File id returned by the audience upload URL. UTF-8 CSV with a header row; comma, semicolon or tab separated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `512` characters |"
          },
          "mapping": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "phone": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200,
                "description": "Header of the phone column.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `200` characters |"
              },
              "variables": {
                "type": "object",
                "maxProperties": 50,
                "additionalProperties": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "description": "Variable name to column header.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Object size | At most `50` properties |"
              }
            },
            "required": [
              "phone"
            ],
            "description": "Structured mapping values for this platform create audience request."
          }
        },
        "required": [
          "name"
        ]
      },
      "platform__AudienceImportResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "name": {
            "type": "string",
            "description": "Human-readable name for this resource."
          },
          "source": {
            "type": "string",
            "enum": [
              "csv",
              "manual",
              "api"
            ],
            "description": "Specifies source for this platform audience import result.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `csv` | Csv. |\n| `manual` | Manual. |\n| `api` | Api. |"
          },
          "recipientCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of recipients.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "fileId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Identifier for the file.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "columns": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Columns associated with this platform audience import result.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `array` |\n| Alternative 2 | `null` |"
          },
          "sampleRow": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Structured sample row values for this platform audience import result.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object` |\n| Alternative 2 | `null` |"
          },
          "mapping": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": true,
            "description": "Structured mapping values for this platform audience import result.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object` |\n| Alternative 2 | `null` |"
          },
          "createdAt": {
            "type": "integer",
            "description": "Unix timestamp in milliseconds when this resource was created."
          },
          "updatedAt": {
            "type": "integer",
            "description": "Unix timestamp in milliseconds when this resource was last updated."
          },
          "duplicateCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Valid rows skipped because the number appeared earlier.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "invalidCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of invalids.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "invalidRows": {
            "type": "array",
            "maxItems": 20,
            "items": {
              "$ref": "#/components/schemas/platform__InvalidRecipientRow"
            },
            "description": "Invalid rows associated with this platform audience import result.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `20` items |"
          }
        },
        "required": [
          "id",
          "name",
          "source",
          "recipientCount",
          "fileId",
          "columns",
          "sampleRow",
          "mapping",
          "createdAt",
          "updatedAt",
          "duplicateCount",
          "invalidCount",
          "invalidRows"
        ]
      },
      "platform__AudienceFromCampaignResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "name": {
            "type": "string",
            "description": "Human-readable name for this resource."
          },
          "source": {
            "type": "string",
            "enum": [
              "campaign"
            ],
            "description": "Specifies source for this platform audience from campaign result.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `campaign` | Campaign. |"
          },
          "recipientCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Members in the new audience.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "fileId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Identifier for the file.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "columns": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Columns associated with this platform audience from campaign result.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `array` |\n| Alternative 2 | `null` |"
          },
          "sampleRow": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Structured sample row values for this platform audience from campaign result.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object` |\n| Alternative 2 | `null` |"
          },
          "mapping": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": true,
            "description": "Structured mapping values for this platform audience from campaign result.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object` |\n| Alternative 2 | `null` |"
          },
          "createdAt": {
            "type": "integer",
            "description": "Unix timestamp in milliseconds when this resource was created."
          },
          "updatedAt": {
            "type": "integer",
            "description": "Unix timestamp in milliseconds when this resource was last updated."
          },
          "sourceCampaignId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the source campaign.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "outcome": {
            "type": "string",
            "enum": [
              "delivered",
              "not_delivered",
              "read",
              "not_read",
              "replied",
              "not_replied",
              "failed"
            ],
            "description": "Specifies outcome for this platform audience from campaign result.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `delivered` | Delivered. |\n| `not_delivered` | Not delivered. |\n| `read` | Read. |\n| `not_read` | Not read. |\n| `replied` | Replied. |\n| `not_replied` | Not replied. |\n| `failed` | Failed. |"
          },
          "matchedCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Recipients of the source campaign with the outcome, before opt-outs were left out.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "optedOutCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Matched recipients left out because the number is on the team's opt-out list.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "id",
          "name",
          "source",
          "recipientCount",
          "fileId",
          "columns",
          "sampleRow",
          "mapping",
          "createdAt",
          "updatedAt",
          "sourceCampaignId",
          "outcome",
          "matchedCount",
          "optedOutCount"
        ]
      },
      "platform__AudienceMember": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "phone": {
            "type": "string",
            "description": "Phone number in international format."
          },
          "variables": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Structured variables values for this platform audience member."
          },
          "createdAt": {
            "type": "integer",
            "description": "Unix timestamp in milliseconds when this resource was created."
          }
        },
        "required": [
          "id",
          "phone",
          "variables",
          "createdAt"
        ]
      },
      "platform__AudienceMemberAppendResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "listId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the list.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "added": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies added for this platform audience member append result.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "recipientCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of recipients.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "duplicateCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Valid entries skipped because the number was repeated or is already in the audience.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "invalidCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of invalids.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "invalidRows": {
            "type": "array",
            "maxItems": 20,
            "items": {
              "$ref": "#/components/schemas/platform__InvalidRecipientRow"
            },
            "description": "Invalid rows associated with this platform audience member append result.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `20` items |"
          }
        },
        "required": [
          "listId",
          "added",
          "recipientCount",
          "duplicateCount",
          "invalidCount",
          "invalidRows"
        ]
      },
      "platform__CampaignRecipient": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "phone": {
            "type": "string",
            "description": "Phone number in international format."
          },
          "variables": {
            "type": "object",
            "additionalProperties": true,
            "description": "Structured variables values for this platform campaign recipient."
          },
          "variantKey": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies variant key for this platform campaign recipient.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "status": {
            "type": "string",
            "enum": [
              "queued",
              "sending",
              "sent",
              "delivered",
              "read",
              "failed",
              "skipped"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `queued` | Queued. |\n| `sending` | Sending. |\n| `sent` | Sent. |\n| `delivered` | Delivered. |\n| `read` | Read. |\n| `failed` | Failed. |\n| `skipped` | Skipped. |"
          },
          "attempts": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies attempts for this platform campaign recipient.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "lastError": {
            "type": [
              "string",
              "null"
            ],
            "description": "Legacy alias of the normalized `failureReason` code. Raw stored errors are never returned.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "failureReason": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__CampaignRecipientFailureReason"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies failure reason for this platform campaign recipient.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `opted_out` or `cold_held` or `campaign_cancelled` or `invalid_recipient` or `session_not_connected` or `ack_timeout` or `blocked_by_safety` or `send_failed` or `missing_variable` or `frequency_cap` or `other` |\n| Alternative 2 | `null` |"
          },
          "externalMessageId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Identifier for the external message.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "queuedAt": {
            "type": "integer",
            "description": "Timestamp for queued at."
          },
          "sentAt": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Timestamp for sent at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
          },
          "deliveredAt": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Timestamp for delivered at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
          },
          "readAt": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Timestamp for read at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
          },
          "failedAt": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Timestamp for failed at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
          },
          "respondedAt": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Timestamp for responded at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
          },
          "messagesSent": {
            "type": "integer",
            "minimum": 0,
            "description": "Messages of the campaign's message sequence this recipient has been sent. `status`, `sentAt`, `deliveredAt` and `readAt` describe the first message.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "nextMessageAt": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Earliest time the next message is sent, in Unix milliseconds. Null when no message is waiting.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
          },
          "sequenceError": {
            "type": [
              "string",
              "null"
            ],
            "description": "Why the remaining messages will not be sent: `opted_out`, `campaign_cancelled`, `sender_unavailable`, or the failure class of the message that failed, such as `conversation_window_closed`. Null otherwise.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "followUp": {
            "description": "Receipt-timed follow-up for this recipient; null when none was admitted.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `status`: `waiting_receipt` or `scheduled` or `sending` or `sent` or `cancelled` or `expired` or `failed` or `outcome_unknown`; Field `anchorKind`: `delivered` or `read` or `null`; Required fields: `id`, `numberId`, `status`, `anchorKind`, `firstDeliveredAt`, `firstReadAt`, `dueAt`, `expiresAt`, `sentAt`, `deliveredAt`, `readAt`, `repliedAt`, `reason`, `commandId` |\n| Alternative 2 | `null` |",
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__CampaignFollowUpSummary"
                  }
                ]
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "phone",
          "variables",
          "variantKey",
          "status",
          "attempts",
          "lastError",
          "failureReason",
          "externalMessageId",
          "queuedAt",
          "sentAt",
          "deliveredAt",
          "readAt",
          "failedAt",
          "respondedAt",
          "messagesSent",
          "nextMessageAt",
          "sequenceError",
          "followUp"
        ]
      },
      "platform__CampaignRecipientFailureReason": {
        "type": "string",
        "enum": [
          "opted_out",
          "cold_held",
          "campaign_cancelled",
          "invalid_recipient",
          "session_not_connected",
          "ack_timeout",
          "blocked_by_safety",
          "send_failed",
          "missing_variable",
          "frequency_cap",
          "other"
        ],
        "description": "Why the recipient was not sent, or why its last attempt did not succeed. Null when nothing went wrong. `opted_out`: the number is on the team's opt-out list. `cold_held`: the number never wrote to the sending number and the campaign holds cold sends. `campaign_cancelled`: the campaign was stopped before this recipient was sent. `invalid_recipient`: the number is not a valid WhatsApp address. `session_not_connected`: the sending number was not connected. `ack_timeout`: WhatsApp did not acknowledge the send in time. `blocked_by_safety`: a safety check refused the send before it was attempted; the recipient waits for the campaign to resume. `send_failed`: WhatsApp refused the send, or its outcome could not be confirmed. `missing_variable`: the campaign was launched with `skipMissingVariables` and the recipient had no value and no fallback for a variable. `frequency_cap`: the recipient reached the team's or campaign's rolling contact frequency cap. `other`: any other reason. New codes may be added."
      },
      "platform__CampaignRecipientAppendResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "campaignId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the campaign.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "added": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies added for this platform campaign recipient append result.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "recipientCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of recipients.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "duplicateCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Valid entries skipped because the number was repeated or is already on the campaign.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "invalidCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of invalids.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "invalidRows": {
            "type": "array",
            "maxItems": 20,
            "items": {
              "$ref": "#/components/schemas/platform__InvalidRecipientRow"
            },
            "description": "Invalid rows associated with this platform campaign recipient append result.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `20` items |"
          }
        },
        "required": [
          "campaignId",
          "added",
          "recipientCount",
          "duplicateCount",
          "invalidCount",
          "invalidRows"
        ]
      },
      "platform__CursorPageMetadata": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "nextCursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies next cursor for this platform cursor page metadata.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether more."
          }
        },
        "required": [
          "nextCursor",
          "hasMore"
        ]
      },
      "platform__IndexedEventPageMetadata": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "nextCursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies next cursor for this platform indexed event page metadata.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether more."
          },
          "nextOffset": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies next offset for this platform indexed event page metadata.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "highWatermark": {
            "type": "string",
            "description": "Specifies high watermark for this platform indexed event page metadata."
          }
        },
        "required": [
          "nextCursor",
          "hasMore"
        ]
      },
      "platform__BanSafeHealthProbabilities": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "healthy": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "description": "Specifies healthy for this platform ban safe health probability.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
          },
          "limited": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "description": "Specifies limited for this platform ban safe health probability.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
          },
          "restricted": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "description": "Specifies restricted for this platform ban safe health probability.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
          },
          "banned": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "description": "Specifies banned for this platform ban safe health probability.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
          }
        },
        "required": [
          "healthy",
          "limited",
          "restricted",
          "banned"
        ]
      },
      "platform__BanSafeObservedAccountState": {
        "type": "object",
        "additionalProperties": false,
        "description": "Direct account-state evidence. This is not an ML estimate.",
        "properties": {
          "state": {
            "type": "string",
            "enum": [
              "healthy",
              "limited",
              "restricted",
              "banned"
            ],
            "description": "Current lifecycle state of this resource.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `healthy` | Healthy. |\n| `limited` | Limited. |\n| `restricted` | Restricted. |\n| `banned` | Banned. |"
          },
          "observedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when Polymorfa observed this state.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "source": {
            "type": "string",
            "enum": [
              "account_check",
              "restriction_event"
            ],
            "description": "Specifies source for this platform ban safe observed account state.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `account_check` | Account check. |\n| `restriction_event` | Restriction event. |"
          }
        },
        "required": [
          "state",
          "observedAt",
          "source"
        ]
      },
      "platform__BanSafeHealthExplanationFactor": {
        "type": "object",
        "additionalProperties": false,
        "description": "One factual rules-v1 input. penalty is the number of Health points this input subtracts.",
        "properties": {
          "group": {
            "type": "string",
            "enum": [
              "direct_condition",
              "delivery",
              "connection",
              "conduct",
              "cadence"
            ],
            "description": "Specifies group for this platform ban safe health explanation factor.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `direct_condition` | Direct condition. |\n| `delivery` | Delivery. |\n| `connection` | Connection. |\n| `conduct` | Conduct. |\n| `cadence` | Cadence. |"
          },
          "key": {
            "type": "string",
            "enum": [
              "observed_limited",
              "observed_restricted",
              "observed_banned",
              "send_failures",
              "receipt_errors",
              "server_ack_tail",
              "connection_failures",
              "connection_churn",
              "connection_disconnected",
              "auto_reconnect_errors",
              "keep_alive_errors",
              "unanswered_first_contacts",
              "unsolicited_sends",
              "send_burst",
              "fixed_send_rhythm"
            ],
            "description": "Specifies key for this platform ban safe health explanation factor.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `observed_limited` | Observed limited. |\n| `observed_restricted` | Observed restricted. |\n| `observed_banned` | Observed banned. |\n| `send_failures` | Send failures. |\n| `receipt_errors` | Receipt errors. |\n| `server_ack_tail` | Server ack tail. |\n| `connection_failures` | Connection failures. |\n| `connection_churn` | Connection churn. |\n| `connection_disconnected` | Connection disconnected. |\n| `auto_reconnect_errors` | Auto reconnect errors. |\n| `keep_alive_errors` | Keep alive errors. |\n| `unanswered_first_contacts` | Unanswered first contacts. |\n| `unsolicited_sends` | Unsolicited sends. |\n| `send_burst` | Send burst. |\n| `fixed_send_rhythm` | Fixed send rhythm. |"
          },
          "penalty": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "description": "Specifies penalty for this platform ban safe health explanation factor.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `100` (inclusive) |"
          },
          "observedValue": {
            "type": "number",
            "description": "Specifies observed value for this platform ban safe health explanation factor."
          },
          "sampleSize": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies sample size for this platform ban safe health explanation factor.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "group",
          "key",
          "penalty",
          "observedValue",
          "sampleSize"
        ]
      },
      "platform__BanSafeHealthExplanation": {
        "type": "object",
        "additionalProperties": false,
        "description": "Bounded rules-v1 inputs and deductions. It is not a forecast or confidence score.",
        "properties": {
          "penalties": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "conduct": {
                "type": "number",
                "minimum": 0,
                "maximum": 100,
                "description": "Specifies conduct for this penalty.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `100` (inclusive) |"
              },
              "delivery": {
                "type": "number",
                "minimum": 0,
                "maximum": 100,
                "description": "Specifies delivery for this penalty.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `100` (inclusive) |"
              },
              "connection": {
                "type": "number",
                "minimum": 0,
                "maximum": 100,
                "description": "Specifies connection for this penalty.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `100` (inclusive) |"
              },
              "restriction": {
                "type": "number",
                "minimum": 0,
                "maximum": 100,
                "description": "Specifies restriction for this penalty.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `100` (inclusive) |"
              },
              "total": {
                "type": "number",
                "minimum": 0,
                "maximum": 100,
                "description": "Final total for this order or price summary.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `100` (inclusive) |"
              }
            },
            "required": [
              "conduct",
              "delivery",
              "connection",
              "restriction",
              "total"
            ],
            "description": "Structured penalties values for this platform ban safe health explanation."
          },
          "factors": {
            "type": "array",
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/platform__BanSafeHealthExplanationFactor"
            },
            "description": "Factors associated with this platform ban safe health explanation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `8` items |"
          },
          "measuredGroups": {
            "type": "array",
            "maxItems": 5,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "enum": [
                "direct_condition",
                "delivery",
                "connection",
                "conduct",
                "cadence"
              ]
            },
            "description": "Measured groups associated with this platform ban safe health explanation.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `direct_condition` | Direct condition. |\n| `delivery` | Delivery. |\n| `connection` | Connection. |\n| `conduct` | Conduct. |\n| `cadence` | Cadence. |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `5` items |\n| Duplicates | Not accepted; every array item must be unique |"
          },
          "missingGroups": {
            "type": "array",
            "maxItems": 5,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "enum": [
                "direct_condition",
                "delivery",
                "connection",
                "conduct",
                "cadence"
              ]
            },
            "description": "Missing groups associated with this platform ban safe health explanation.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `direct_condition` | Direct condition. |\n| `delivery` | Delivery. |\n| `connection` | Connection. |\n| `conduct` | Conduct. |\n| `cadence` | Cadence. |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `5` items |\n| Duplicates | Not accepted; every array item must be unique |"
          }
        },
        "required": [
          "penalties",
          "factors",
          "measuredGroups",
          "missingGroups"
        ]
      },
      "platform__BanSafeSignalDefinition": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "key": {
            "type": "string",
            "description": "Specifies key for this platform ban safe signal definition."
          },
          "label": {
            "type": "string",
            "description": "Specifies label for this platform ban safe signal definition."
          },
          "group": {
            "type": "string",
            "description": "Specifies group for this platform ban safe signal definition."
          },
          "kind": {
            "type": "string",
            "enum": [
              "number",
              "boolean",
              "enum",
              "histogram",
              "code_counts"
            ],
            "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `number` | Number. |\n| `boolean` | Boolean. |\n| `enum` | Enum. |\n| `histogram` | Histogram. |\n| `code_counts` | Code counts. |"
          },
          "unit": {
            "type": "string",
            "enum": [
              "count",
              "milliseconds",
              "unix_milliseconds",
              "ratio",
              "none"
            ],
            "description": "Specifies unit for this platform ban safe signal definition.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `count` | Count. |\n| `milliseconds` | Milliseconds. |\n| `unix_milliseconds` | Unix milliseconds. |\n| `ratio` | Ratio. |\n| `none` | None. |"
          },
          "description": {
            "type": "string",
            "description": "Human-readable description of this resource."
          }
        },
        "required": [
          "key",
          "label",
          "group",
          "kind",
          "unit",
          "description"
        ]
      },
      "platform__BanSafeSignalCodeCount": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "integer",
            "minimum": 0,
            "description": "Stable machine-readable code for this result.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "count": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of matching resources.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "code",
          "count"
        ]
      },
      "platform__BanSafeSignal": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "key": {
            "type": "string",
            "description": "Specifies key for this platform ban safe signal."
          },
          "label": {
            "type": "string",
            "description": "Specifies label for this platform ban safe signal."
          },
          "group": {
            "type": "string",
            "description": "Specifies group for this platform ban safe signal."
          },
          "kind": {
            "type": "string",
            "enum": [
              "number",
              "boolean",
              "enum",
              "histogram",
              "code_counts"
            ],
            "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `number` | Number. |\n| `boolean` | Boolean. |\n| `enum` | Enum. |\n| `histogram` | Histogram. |\n| `code_counts` | Code counts. |"
          },
          "unit": {
            "type": "string",
            "enum": [
              "count",
              "milliseconds",
              "unix_milliseconds",
              "ratio",
              "none"
            ],
            "description": "Specifies unit for this platform ban safe signal.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `count` | Count. |\n| `milliseconds` | Milliseconds. |\n| `unix_milliseconds` | Unix milliseconds. |\n| `ratio` | Ratio. |\n| `none` | None. |"
          },
          "description": {
            "type": "string",
            "description": "Human-readable description of this resource."
          },
          "measured": {
            "type": "boolean",
            "description": "Whether measured."
          },
          "value": {
            "anyOf": [
              {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "boolean"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "number"
                    }
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Value assigned to this field.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Any JSON value matching this alternative |\n| Alternative 2 | `null` |"
          },
          "sampleSize": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "description": "Specifies sample size for this platform ban safe signal.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "codes": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/platform__BanSafeSignalCodeCount"
            },
            "description": "Codes associated with this platform ban safe signal.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `array` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "key",
          "label",
          "group",
          "kind",
          "unit",
          "description",
          "measured",
          "value",
          "sampleSize",
          "codes"
        ]
      },
      "platform__BanSafeCollectionStatus": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "state": {
            "type": "string",
            "enum": [
              "fresh",
              "stale",
              "not_collected",
              "unsupported"
            ],
            "description": "Current lifecycle state of this resource.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `fresh` | Fresh. |\n| `stale` | Stale. |\n| `not_collected` | Not collected. |\n| `unsupported` | Unsupported. |"
          },
          "latestFlushedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for latest flushed at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "latestReceivedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for latest received at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "freshUntil": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Specifies fresh until for this platform ban safe collection status.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "recordVersion": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "description": "Specifies record version for this platform ban safe collection status.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "collectorVersion": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "description": "Specifies collector version for this platform ban safe collection status.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "partial": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether partial.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `boolean` |\n| Alternative 2 | `null` |"
          },
          "droppedRecords": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "description": "Specifies dropped records for this platform ban safe collection status.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "state",
          "latestFlushedAt",
          "latestReceivedAt",
          "freshUntil",
          "recordVersion",
          "collectorVersion",
          "partial",
          "droppedRecords"
        ]
      },
      "platform__BanSafeTelemetrySnapshot": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "bucketStart": {
            "type": "string",
            "format": "date-time",
            "description": "Specifies bucket start for this platform ban safe telemetry snapshot.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "flushedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for flushed at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "receivedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for received at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "partial": {
            "type": "boolean",
            "description": "Whether partial."
          },
          "recordVersion": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "description": "Specifies record version for this platform ban safe telemetry snapshot.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "signals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/platform__BanSafeSignal"
            },
            "description": "Signals associated with this platform ban safe telemetry snapshot."
          }
        },
        "required": [
          "bucketStart",
          "flushedAt",
          "receivedAt",
          "partial",
          "recordVersion",
          "signals"
        ]
      },
      "platform__BanSafeCollectionSession": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sessionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "session": {
            "type": "string",
            "description": "Identifier of the connected Polymorfa session."
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "collection": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__BanSafeCollectionStatus"
              }
            ],
            "description": "Specifies collection for this platform ban safe collection session."
          }
        },
        "required": [
          "sessionId",
          "session",
          "projectId",
          "collection"
        ]
      },
      "platform__BanSafeTelemetryDetail": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sessionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "session": {
            "type": "string",
            "description": "Identifier of the connected Polymorfa session."
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "collection": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__BanSafeCollectionStatus"
              }
            ],
            "description": "Specifies collection for this platform ban safe telemetry detail."
          },
          "snapshot": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__BanSafeTelemetrySnapshot"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies snapshot for this platform ban safe telemetry detail.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `bucketStart`, `flushedAt`, `receivedAt`, `partial`, `recordVersion`, `signals` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "sessionId",
          "session",
          "projectId",
          "collection",
          "snapshot"
        ]
      },
      "platform__BanSafeHealthAction": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "sessionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "session": {
            "type": "string",
            "description": "Identifier of the connected Polymorfa session."
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "mode": {
            "type": "string",
            "enum": [
              "apply",
              "clear"
            ],
            "description": "Operating mode selected for this feature.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `apply` | Apply. |\n| `clear` | Clear. |"
          },
          "action": {
            "type": "string",
            "enum": [
              "stop",
              "slow_down",
              "log_out",
              "email",
              "webhook"
            ],
            "description": "Action represented by this platform ban safe health action.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `stop` | Stop. |\n| `slow_down` | Slow down. |\n| `log_out` | Log out. |\n| `email` | Email. |\n| `webhook` | Webhook. |"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "running",
              "succeeded",
              "failed",
              "cancelled"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending` | Pending. |\n| `running` | Running. |\n| `succeeded` | Succeeded. |\n| `failed` | Failed. |\n| `cancelled` | Cancelled. |"
          },
          "health": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "description": "Specifies health for this platform ban safe health action.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `100` (inclusive) |"
          },
          "threshold": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "description": "Specifies threshold for this platform ban safe health action.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `100` (inclusive) |"
          },
          "healthSource": {
            "type": "string",
            "enum": [
              "rules_v1",
              "ml_model"
            ],
            "description": "Specifies health source for this platform ban safe health action.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `rules_v1` | Rules v1. |\n| `ml_model` | Ml model. |"
          },
          "estimatorVersion": {
            "type": "string",
            "description": "Specifies estimator version for this platform ban safe health action."
          },
          "modelVersion": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies model version for this platform ban safe health action.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "slowDownMps": {
            "type": [
              "number",
              "null"
            ],
            "exclusiveMinimum": 0,
            "description": "Specifies slow down mps for this platform ban safe health action.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: Greater than `0` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | Greater than `0` |"
          },
          "evaluatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for evaluated at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "completedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "ISO 8601 timestamp when this operation completed.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "outcome": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "applied",
              "cleared",
              "notification_queued",
              "superseded",
              "expired",
              "not_applied",
              "delivery_failed",
              null
            ],
            "description": "Specifies outcome for this platform ban safe health action.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `applied` | Applied. |\n| `cleared` | Cleared. |\n| `notification_queued` | Notification queued. |\n| `superseded` | Superseded. |\n| `expired` | Expired. |\n| `not_applied` | Not applied. |\n| `delivery_failed` | Delivery failed. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `applied` or `cleared` or `notification_queued` or `superseded` or `expired` or `not_applied` or `delivery_failed` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "id",
          "sessionId",
          "session",
          "projectId",
          "mode",
          "action",
          "status",
          "health",
          "threshold",
          "healthSource",
          "estimatorVersion",
          "modelVersion",
          "slowDownMps",
          "evaluatedAt",
          "createdAt",
          "completedAt",
          "outcome"
        ]
      },
      "platform__BanSafeNumberEnforcement": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "rung": {
            "type": "string",
            "enum": [
              "none",
              "notify",
              "throttle",
              "block_cold",
              "suspend"
            ],
            "description": "Specifies rung for this platform ban safe number enforcement.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `notify` | Notify. |\n| `throttle` | Throttle. |\n| `block_cold` | Block cold. |\n| `suspend` | Suspend. |"
          },
          "previousRung": {
            "type": "string",
            "enum": [
              "none",
              "notify",
              "throttle",
              "block_cold",
              "suspend"
            ],
            "description": "Specifies previous rung for this platform ban safe number enforcement.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `notify` | Notify. |\n| `throttle` | Throttle. |\n| `block_cold` | Block cold. |\n| `suspend` | Suspend. |"
          },
          "organizationFloor": {
            "type": "string",
            "enum": [
              "none",
              "notify",
              "throttle",
              "block_cold",
              "suspend"
            ],
            "description": "The lowest restriction every number in this workspace is held to.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `notify` | Notify. |\n| `throttle` | Throttle. |\n| `block_cold` | Block cold. |\n| `suspend` | Suspend. |"
          },
          "reason": {
            "type": "string",
            "description": "Reason for the reported state or outcome."
          },
          "source": {
            "type": "string",
            "enum": [
              "automatic",
              "operator"
            ],
            "description": "Specifies source for this platform ban safe number enforcement.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `automatic` | Automatic. |\n| `operator` | Operator. |"
          },
          "throughputPerMinute": {
            "type": [
              "number",
              "null"
            ],
            "description": "Messages per minute this number is paced to, or null when it is not paced.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "blocksUnsolicited": {
            "type": "boolean",
            "description": "First messages to people who never wrote to this number are refused outside Campaigns."
          },
          "suspended": {
            "type": "boolean",
            "description": "This number cannot originate a message. It still receives, reads, and shows presence."
          },
          "startedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for started at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "eligibleLiftAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for eligible lift at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "exitProgress": {
            "type": "integer",
            "minimum": 0,
            "description": "Consecutive checks already passed toward lifting.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "blockingFindings": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Blocking findings associated with this platform ban safe number enforcement."
          },
          "operatorHold": {
            "type": "boolean",
            "description": "Whether operator hold."
          },
          "appealState": {
            "type": "string",
            "enum": [
              "none",
              "requested",
              "granted",
              "denied"
            ],
            "description": "Specifies appeal state for this platform ban safe number enforcement.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `requested` | Requested. |\n| `granted` | Granted. |\n| `denied` | Denied. |"
          },
          "state": {
            "type": "string",
            "enum": [
              "applied",
              "applying"
            ],
            "description": "`applying` while the number has not confirmed the restriction.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `applied` | Applied. |\n| `applying` | Applying. |"
          }
        },
        "required": [
          "rung",
          "previousRung",
          "organizationFloor",
          "reason",
          "source",
          "throughputPerMinute",
          "blocksUnsolicited",
          "suspended",
          "startedAt",
          "eligibleLiftAt",
          "exitProgress",
          "blockingFindings",
          "operatorHold",
          "appealState",
          "state"
        ]
      },
      "platform__BanSafeNumber": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sessionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "session": {
            "type": "string",
            "description": "Identifier of the connected Polymorfa session."
          },
          "phoneNumber": {
            "type": "string",
            "description": "Phone number in international format."
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "health": {
            "type": [
              "number",
              "null"
            ],
            "minimum": 0,
            "maximum": 100,
            "description": "Estimate of present account Health. Higher is healthier. Read healthSource, healthReliability, and healthFeatureCoverage with it.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `100` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `100` (inclusive) |"
          },
          "band": {
            "type": "string",
            "enum": [
              "good",
              "fair",
              "poor",
              "failing",
              "unknown"
            ],
            "description": "Specifies band for this platform ban safe number.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `good` | Good. |\n| `fair` | Fair. |\n| `poor` | Poor. |\n| `failing` | Failing. |\n| `unknown` | Unknown. |"
          },
          "healthSource": {
            "type": "string",
            "enum": [
              "rules_v1",
              "ml_model",
              "unavailable"
            ],
            "description": "Estimator family. rules_v1 is deterministic; unavailable carries no numeric Health.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `rules_v1` | Rules v1. |\n| `ml_model` | Ml model. |\n| `unavailable` | Unavailable. |"
          },
          "healthEstimatorVersion": {
            "type": [
              "string",
              "null"
            ],
            "description": "Version of the estimator that produced Health.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "healthModelVersion": {
            "type": [
              "string",
              "null"
            ],
            "description": "Learned-model artifact version. Null for rules_v1.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "healthEvaluatedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for health evaluated at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "healthFeatureCoverage": {
            "type": [
              "number",
              "null"
            ],
            "minimum": 0,
            "maximum": 1,
            "description": "Specifies health feature coverage for this platform ban safe number.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
          },
          "healthReliability": {
            "type": "string",
            "enum": [
              "rules_based",
              "validated",
              "unavailable"
            ],
            "description": "Support category, not a confidence score.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `rules_based` | Rules based. |\n| `validated` | Validated. |\n| `unavailable` | Unavailable. |"
          },
          "healthUnavailableReason": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "no_active_model",
              "invalid_active_model",
              "insufficient_fresh_features",
              null
            ],
            "description": "Specifies health unavailable reason for this platform ban safe number.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `no_active_model` | No active model. |\n| `invalid_active_model` | Invalid active model. |\n| `insufficient_fresh_features` | Insufficient fresh features. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `no_active_model` or `invalid_active_model` or `insufficient_fresh_features` |\n| Alternative 2 | `null` |"
          },
          "healthProbabilities": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__BanSafeHealthProbabilities"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies health probabilities for this platform ban safe number.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `healthy`, `limited`, `restricted`, `banned` |\n| Alternative 2 | `null` |"
          },
          "mostLikelyHealthState": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "healthy",
              "limited",
              "restricted",
              "banned",
              null
            ],
            "description": "Specifies most likely health state for this platform ban safe number.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `healthy` | Healthy. |\n| `limited` | Limited. |\n| `restricted` | Restricted. |\n| `banned` | Banned. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `healthy` or `limited` or `restricted` or `banned` |\n| Alternative 2 | `null` |"
          },
          "healthExplanation": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__BanSafeHealthExplanation"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies health explanation for this platform ban safe number.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `penalties`, `factors`, `measuredGroups`, `missingGroups` |\n| Alternative 2 | `null` |"
          },
          "observedAccountState": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__BanSafeObservedAccountState"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies observed account state for this platform ban safe number.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `state`: `healthy` or `limited` or `restricted` or `banned`; Field `source`: `account_check` or `restriction_event`; Required fields: `state`, `observedAt`, `source` |\n| Alternative 2 | `null` |"
          },
          "enforcement": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__BanSafeNumberEnforcement"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies enforcement for this platform ban safe number.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `rung`: `none` or `notify` or `throttle` or `block_cold` or `suspend`; Field `previousRung`: `none` or `notify` or `throttle` or `block_cold` or `suspend`; Field `organizationFloor`: `none` or `notify` or `throttle` or `block_cold` or `suspend`; Field `source`: `automatic` or `operator`; Field `appealState`: `none` or `requested` or `granted` or `denied`; Field `state`: `applied` or `applying`; Required fields: `rung`, `previousRung`, `organizationFloor`, `reason`, `source`, `throughputPerMinute`, `blocksUnsolicited`, `suspended`, `startedAt`, `eligibleLiftAt`, `exitProgress`, `blockingFindings`, `operatorHold`, `appealState`, `state` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "sessionId",
          "session",
          "phoneNumber",
          "projectId",
          "health",
          "band",
          "healthSource",
          "healthEstimatorVersion",
          "healthModelVersion",
          "healthEvaluatedAt",
          "healthFeatureCoverage",
          "healthReliability",
          "healthUnavailableReason",
          "healthProbabilities",
          "mostLikelyHealthState",
          "healthExplanation",
          "observedAccountState",
          "enforcement"
        ]
      },
      "platform__BanSafeFinding": {
        "type": "object",
        "additionalProperties": false,
        "description": "One safety finding, with the sentences to show a customer. A `not_measured` entry has no stored lifecycle and reports null timestamps; it is never reported as resolved and never omitted.",
        "properties": {
          "id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "key": {
            "type": "string",
            "maxLength": 64,
            "description": "Specifies key for this platform ban safe finding.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `64` characters |"
          },
          "title": {
            "type": "string",
            "description": "Customer-visible name of the check. A `not_measured` entry carries the same title as a stored one."
          },
          "summary": {
            "type": "string",
            "description": "The evidence sentence for this finding, with the numbers from `evidence` already filled in. A number the check could not read reads as `unknown`, and a `not_measured` entry therefore reads as the sentence with no numbers in it. Empty for a key Polymorfa has retired."
          },
          "fix": {
            "type": "string",
            "description": "What to change to clear the finding. Empty for a key Polymorfa has retired."
          },
          "status": {
            "type": "string",
            "enum": [
              "open",
              "acknowledged",
              "resolved",
              "not_measured"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `open` | Open. |\n| `acknowledged` | Acknowledged. |\n| `resolved` | Resolved. |\n| `not_measured` | Not measured. |"
          },
          "severity": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "info",
              "warning",
              "critical",
              null
            ],
            "description": "Specifies severity for this platform ban safe finding.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `info` | Info. |\n| `warning` | Warning. |\n| `critical` | Critical. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `info` or `warning` or `critical` |\n| Alternative 2 | `null` |"
          },
          "occurrences": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies occurrences for this platform ban safe finding.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "reopenedCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of reopeneds.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "evidence": {
            "type": "object",
            "additionalProperties": true,
            "description": "Numbers only. Never message content, a message identifier, or a recipient identifier."
          },
          "sessionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "session": {
            "type": "string",
            "description": "Identifier of the connected Polymorfa session."
          },
          "phoneNumber": {
            "type": "string",
            "description": "Phone number in international format."
          },
          "firstSeenAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for first seen at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "lastSeenAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for last seen at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "acknowledgedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for acknowledged at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "acknowledgedBy": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies acknowledged by for this platform ban safe finding.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "acknowledgementNote": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 500,
            "description": "Specifies acknowledgement note for this platform ban safe finding.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: At most `500` characters |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `500` characters |"
          },
          "snoozedUntil": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Specifies snoozed until for this platform ban safe finding.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "resolvedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for resolved at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "resolveReason": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "clean",
              "key_retired",
              "number_removed",
              "stale",
              null
            ],
            "description": "Specifies resolve reason for this platform ban safe finding.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `clean` | Clean. |\n| `key_retired` | Key retired. |\n| `number_removed` | Number removed. |\n| `stale` | Stale. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `clean` or `key_retired` or `number_removed` or `stale` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "id",
          "key",
          "title",
          "summary",
          "fix",
          "status",
          "severity",
          "occurrences",
          "reopenedCount",
          "evidence",
          "sessionId",
          "session",
          "phoneNumber",
          "firstSeenAt",
          "lastSeenAt",
          "acknowledgedAt",
          "acknowledgedBy",
          "acknowledgementNote",
          "snoozedUntil",
          "resolvedAt",
          "resolveReason"
        ]
      },
      "platform__BanSafeNumberDetail": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "health": {
            "type": [
              "number",
              "null"
            ],
            "minimum": 0,
            "maximum": 100,
            "description": "Estimate of present account Health. Higher is healthier. Read healthSource, healthReliability, and healthFeatureCoverage with it.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `100` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `100` (inclusive) |"
          },
          "band": {
            "type": "string",
            "enum": [
              "good",
              "fair",
              "poor",
              "failing",
              "unknown"
            ],
            "description": "Specifies band for this platform ban safe number detail.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `good` | Good. |\n| `fair` | Fair. |\n| `poor` | Poor. |\n| `failing` | Failing. |\n| `unknown` | Unknown. |"
          },
          "healthSource": {
            "type": "string",
            "enum": [
              "rules_v1",
              "ml_model",
              "unavailable"
            ],
            "description": "Estimator family. rules_v1 is deterministic; unavailable carries no numeric Health.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `rules_v1` | Rules v1. |\n| `ml_model` | Ml model. |\n| `unavailable` | Unavailable. |"
          },
          "healthEstimatorVersion": {
            "type": [
              "string",
              "null"
            ],
            "description": "Version of the estimator that produced Health.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "healthModelVersion": {
            "type": [
              "string",
              "null"
            ],
            "description": "Learned-model artifact version. Null for rules_v1.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "healthEvaluatedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for health evaluated at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "healthFeatureCoverage": {
            "type": [
              "number",
              "null"
            ],
            "minimum": 0,
            "maximum": 1,
            "description": "Specifies health feature coverage for this platform ban safe number detail.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
          },
          "healthReliability": {
            "type": "string",
            "enum": [
              "rules_based",
              "validated",
              "unavailable"
            ],
            "description": "Support category, not a confidence score.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `rules_based` | Rules based. |\n| `validated` | Validated. |\n| `unavailable` | Unavailable. |"
          },
          "healthUnavailableReason": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "no_active_model",
              "invalid_active_model",
              "insufficient_fresh_features",
              null
            ],
            "description": "Specifies health unavailable reason for this platform ban safe number detail.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `no_active_model` | No active model. |\n| `invalid_active_model` | Invalid active model. |\n| `insufficient_fresh_features` | Insufficient fresh features. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `no_active_model` or `invalid_active_model` or `insufficient_fresh_features` |\n| Alternative 2 | `null` |"
          },
          "healthProbabilities": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__BanSafeHealthProbabilities"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies health probabilities for this platform ban safe number detail.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `healthy`, `limited`, `restricted`, `banned` |\n| Alternative 2 | `null` |"
          },
          "mostLikelyHealthState": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "healthy",
              "limited",
              "restricted",
              "banned",
              null
            ],
            "description": "Specifies most likely health state for this platform ban safe number detail.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `healthy` | Healthy. |\n| `limited` | Limited. |\n| `restricted` | Restricted. |\n| `banned` | Banned. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `healthy` or `limited` or `restricted` or `banned` |\n| Alternative 2 | `null` |"
          },
          "healthExplanation": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__BanSafeHealthExplanation"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies health explanation for this platform ban safe number detail.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `penalties`, `factors`, `measuredGroups`, `missingGroups` |\n| Alternative 2 | `null` |"
          },
          "observedAccountState": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__BanSafeObservedAccountState"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies observed account state for this platform ban safe number detail.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `state`: `healthy` or `limited` or `restricted` or `banned`; Field `source`: `account_check` or `restriction_event`; Required fields: `state`, `observedAt`, `source` |\n| Alternative 2 | `null` |"
          },
          "warmup": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__BanSafeNumberWarmup"
              }
            ],
            "description": "Specifies warmup for this platform ban safe number detail."
          },
          "findings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/platform__BanSafeFinding"
            },
            "description": "Findings associated with this platform ban safe number detail."
          },
          "liftRequires": {
            "type": [
              "string",
              "null"
            ],
            "description": "The exact remaining condition for the restriction to lift.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "appealState": {
            "type": "string",
            "enum": [
              "none",
              "requested",
              "granted",
              "denied"
            ],
            "description": "Specifies appeal state for this platform ban safe number detail.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `requested` | Requested. |\n| `granted` | Granted. |\n| `denied` | Denied. |"
          }
        },
        "required": [
          "sessionId",
          "session",
          "phoneNumber",
          "projectId",
          "health",
          "band",
          "healthSource",
          "healthEstimatorVersion",
          "healthModelVersion",
          "healthEvaluatedAt",
          "healthFeatureCoverage",
          "healthReliability",
          "healthUnavailableReason",
          "healthProbabilities",
          "mostLikelyHealthState",
          "healthExplanation",
          "observedAccountState",
          "enforcement",
          "warmup",
          "findings",
          "liftRequires",
          "appealState"
        ]
      },
      "platform__BanSafeNumberWarmup": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          },
          "tenureSource": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "history",
              "link",
              "plan",
              null
            ],
            "description": "Retained evidence anchoring the ramp; null when legacy evidence cannot be classified.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `history` | History. |\n| `link` | Link. |\n| `plan` | Plan. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `history` or `link` or `plan` |\n| Alternative 2 | `null` |"
          },
          "tenureDay": {
            "type": "integer",
            "minimum": 0,
            "description": "Whole days since the number's known tenure lower bound; zero when unknown.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "allowance": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "description": "Messages allowed today; null when the plan is disabled.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "sentToday": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "description": "Durable reservations in the active allowance window. Successful current reads return 0 before the first reservation; null remains accepted for older stored responses.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "resetsAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for resets at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "curve": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/platform__WarmupCurvePoint"
            },
            "description": "Curve associated with this platform ban safe number warmup."
          }
        },
        "required": [
          "enabled",
          "tenureSource",
          "tenureDay",
          "allowance",
          "sentToday",
          "resetsAt",
          "curve"
        ]
      },
      "platform__CampaignSettings": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "launchApproval": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "recipientThreshold": {
                "type": [
                  "integer",
                  "null"
                ],
                "minimum": 1,
                "maximum": 1000000,
                "description": "Launches that would send to more recipients than this need a team owner or admin. Null turns approval off.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `1` through `1000000` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `1000000` (inclusive) |"
              }
            },
            "required": [
              "recipientThreshold"
            ],
            "description": "Structured launch approval values for this platform campaign setting."
          }
        },
        "required": [
          "launchApproval"
        ]
      },
      "platform__CampaignFrequencyCapSettings": {
        "type": "object",
        "additionalProperties": false,
        "description": "The team's contact frequency cap.",
        "properties": {
          "teamId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the team.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "maxPer24Hours": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 1,
            "maximum": 50,
            "description": "Most campaign messages one phone number receives from the team in any rolling 24 hours, 1 to 50. `null` sets no 24-hour limit.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `1` through `50` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `50` (inclusive) |"
          },
          "maxPer7Days": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 1,
            "maximum": 200,
            "description": "Most campaign messages one phone number receives from the team in any rolling 7 days, 1 to 200. `null` sets no 7-day limit. Must not be lower than `maxPer24Hours`.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `1` through `200` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `200` (inclusive) |"
          },
          "revision": {
            "type": "integer",
            "minimum": 0,
            "description": "Send this value back to change the cap. 0 until the team first saves.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "updatedAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Unix time in milliseconds of the last change; null until the team first saves.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Format: `int64` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          }
        },
        "required": [
          "teamId",
          "maxPer24Hours",
          "maxPer7Days",
          "revision",
          "updatedAt"
        ]
      },
      "platform__UpdateCampaignFrequencyCapInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "maxPer24Hours": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 1,
            "maximum": 50,
            "description": "Most campaign messages one phone number receives from the team in any rolling 24 hours, 1 to 50. `null` sets no 24-hour limit.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `1` through `50` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `50` (inclusive) |"
          },
          "maxPer7Days": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 1,
            "maximum": 200,
            "description": "Most campaign messages one phone number receives from the team in any rolling 7 days, 1 to 200. `null` sets no 7-day limit. Must not be lower than `maxPer24Hours`.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `1` through `200` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `200` (inclusive) |"
          },
          "revision": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2147483646,
            "description": "The `revision` from your last read.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `2147483646` (inclusive) |"
          }
        },
        "required": [
          "maxPer24Hours",
          "maxPer7Days",
          "revision"
        ]
      },
      "platform__CampaignLaunchApproval": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "campaignId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the campaign.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "action": {
            "type": "string",
            "enum": [
              "launch",
              "resume",
              "reschedule"
            ],
            "description": "The held command. Approving it runs that command.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `launch` | Launch. |\n| `resume` | Resume. |\n| `reschedule` | Reschedule. |"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "approved",
              "rejected",
              "superseded",
              "expired"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending` | Pending. |\n| `approved` | Approved. |\n| `rejected` | Rejected. |\n| `superseded` | Superseded. |\n| `expired` | Expired. |"
          },
          "reasons": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "audience_threshold",
                "agent_request"
              ]
            },
            "description": "Why the command was held. `audience_threshold`: a launch would send to more recipients than the team's threshold. `agent_request`: an AI agent asked through the hosted MCP server.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `audience_threshold` | Audience threshold. |\n| `agent_request` | Agent request. |"
          },
          "recipientCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Recipients the command would send to: the frozen audience after opt-outs for a launch, the queued recipients for a resume or new start time.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "scheduledAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Requested start in Unix milliseconds; null starts when approved. Null for a resume.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Format: `int64` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "requestedBy": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "type": "string",
                "description": "Type discriminator for this object."
              },
              "id": {
                "type": "string",
                "description": "Identifier for this resource."
              }
            },
            "required": [
              "type",
              "id"
            ],
            "description": "Structured requested by values for this platform campaign launch approval."
          },
          "requestedAt": {
            "type": "integer",
            "format": "int64",
            "description": "Timestamp for requested at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "expiresAt": {
            "type": "integer",
            "format": "int64",
            "description": "Unix timestamp in milliseconds when this resource expires.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "decidedBy": {
            "type": [
              "string",
              "null"
            ],
            "description": "The owner or admin who approved or rejected it.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "decidedAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Timestamp for decided at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Format: `int64` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          },
          "operationId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "The launch operation an approval started.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        },
        "required": [
          "id",
          "campaignId",
          "action",
          "status",
          "reasons",
          "recipientCount",
          "scheduledAt",
          "requestedBy",
          "requestedAt",
          "expiresAt",
          "decidedBy",
          "decidedAt",
          "operationId"
        ]
      },
      "platform__OptOutSettings": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Whether keyword replies change the opt-out list."
          },
          "optOutKeywords": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 32
            },
            "minItems": 1,
            "maxItems": 50,
            "description": "Opt out keywords associated with this platform opt out setting.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `50` items |\n| Item string length | `1` through `32` characters |"
          },
          "optInKeywords": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 32
            },
            "maxItems": 50,
            "description": "Opt in keywords associated with this platform opt out setting.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `50` items |\n| Item string length | `1` through `32` characters |"
          },
          "updatedAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Unix time in milliseconds of the last change; null while the defaults apply.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Format: `int64` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          }
        },
        "required": [
          "enabled",
          "optOutKeywords",
          "optInKeywords",
          "updatedAt"
        ]
      },
      "platform__StopConfirmationSettings": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "teamId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the team.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          },
          "locale": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "en",
              "pt-BR",
              "es",
              null
            ],
            "description": "Specifies locale for this platform stop confirmation setting.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `en` | En. |\n| `pt-BR` | Pt br. |\n| `es` | Es. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `en` or `pt-BR` or `es` |\n| Alternative 2 | `null` |"
          },
          "revision": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies revision for this platform stop confirmation setting.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "textRevision": {
            "type": "integer",
            "enum": [
              1
            ],
            "description": "Specifies text revision for this platform stop confirmation setting.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `1` | 1. |"
          },
          "acknowledgement": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies acknowledgement for this platform stop confirmation setting.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "updatedAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Unix timestamp in milliseconds when this resource was last updated.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Format: `int64` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `int64` |"
          }
        },
        "required": [
          "teamId",
          "enabled",
          "locale",
          "revision",
          "textRevision",
          "acknowledgement",
          "updatedAt"
        ]
      },
      "platform__UpdateStopConfirmationSettingsInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "teamId": {
            "type": "string",
            "format": "uuid",
            "description": "The teamId returned by the settings read. Must match the authenticated team.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          },
          "locale": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "en",
              "pt-BR",
              "es",
              null
            ],
            "description": "Required when enabled. Never inferred from a phone number.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `en` | En. |\n| `pt-BR` | Pt br. |\n| `es` | Es. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `en` or `pt-BR` or `es` |\n| Alternative 2 | `null` |"
          },
          "revision": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2147483646,
            "description": "Specifies revision for this platform update stop confirmation settings input.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `2147483646` (inclusive) |"
          }
        },
        "required": [
          "teamId",
          "enabled",
          "locale",
          "revision"
        ]
      },
      "platform__StopConfirmationSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          },
          "counts": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "queued": {
                "type": "integer",
                "minimum": 0,
                "description": "Specifies queued for this count.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              },
              "admitted": {
                "type": "integer",
                "minimum": 0,
                "description": "Specifies admitted for this count.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              },
              "completed": {
                "type": "integer",
                "minimum": 0,
                "description": "Specifies completed for this count.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              },
              "failed": {
                "type": "integer",
                "minimum": 0,
                "description": "Specifies failed for this count.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              },
              "unknown": {
                "type": "integer",
                "minimum": 0,
                "description": "Specifies unknown for this count.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              }
            },
            "required": [
              "queued",
              "admitted",
              "completed",
              "failed",
              "unknown"
            ],
            "description": "Structured counts values for this platform stop confirmation summary."
          }
        },
        "required": [
          "enabled",
          "counts"
        ]
      },
      "platform__UpdateOptOutSettingsInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          },
          "optOutKeywords": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 32
            },
            "minItems": 1,
            "maxItems": 50,
            "description": "Opt out keywords associated with this platform update opt out settings input.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `50` items |\n| Item string length | `1` through `32` characters |"
          },
          "optInKeywords": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 32
            },
            "maxItems": 50,
            "description": "Opt in keywords associated with this platform update opt out settings input.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `50` items |\n| Item string length | `1` through `32` characters |"
          }
        },
        "required": [
          "enabled",
          "optOutKeywords",
          "optInKeywords"
        ]
      },
      "platform__ProjectInsuranceEvidence": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          },
          "banInsuranceIncluded": {
            "type": "boolean",
            "description": "Whether ban insurance included."
          }
        },
        "required": [
          "projectId",
          "enabled",
          "banInsuranceIncluded"
        ]
      },
      "platform__UpdateProjectInsuranceEvidenceInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          }
        },
        "required": [
          "enabled"
        ]
      },
      "platform__BanSafeHealthPoint": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "health": {
            "type": [
              "number",
              "null"
            ],
            "minimum": 0,
            "maximum": 100,
            "description": "Specifies health for this platform ban safe health point.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `100` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `100` (inclusive) |"
          },
          "band": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "good",
              "fair",
              "poor",
              "failing",
              "unknown",
              null
            ],
            "description": "Specifies band for this platform ban safe health point.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `good` | Good. |\n| `fair` | Fair. |\n| `poor` | Poor. |\n| `failing` | Failing. |\n| `unknown` | Unknown. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `good` or `fair` or `poor` or `failing` or `unknown` |\n| Alternative 2 | `null` |"
          },
          "healthSource": {
            "type": "string",
            "enum": [
              "rules_v1",
              "ml_model",
              "unavailable"
            ],
            "description": "Specifies health source for this platform ban safe health point.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `rules_v1` | Rules v1. |\n| `ml_model` | Ml model. |\n| `unavailable` | Unavailable. |"
          },
          "healthEstimatorVersion": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies health estimator version for this platform ban safe health point.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "healthModelVersion": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies health model version for this platform ban safe health point.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "healthEvaluatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for health evaluated at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "healthFeatureCoverage": {
            "type": [
              "number",
              "null"
            ],
            "minimum": 0,
            "maximum": 1,
            "description": "Specifies health feature coverage for this platform ban safe health point.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
          },
          "healthReliability": {
            "type": "string",
            "enum": [
              "rules_based",
              "validated",
              "unavailable"
            ],
            "description": "Specifies health reliability for this platform ban safe health point.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `rules_based` | Rules based. |\n| `validated` | Validated. |\n| `unavailable` | Unavailable. |"
          },
          "healthUnavailableReason": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "no_active_model",
              "invalid_active_model",
              "insufficient_fresh_features",
              null
            ],
            "description": "Specifies health unavailable reason for this platform ban safe health point.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `no_active_model` | No active model. |\n| `invalid_active_model` | Invalid active model. |\n| `insufficient_fresh_features` | Insufficient fresh features. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `no_active_model` or `invalid_active_model` or `insufficient_fresh_features` |\n| Alternative 2 | `null` |"
          },
          "healthProbabilities": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__BanSafeHealthProbabilities"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies health probabilities for this platform ban safe health point.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `healthy`, `limited`, `restricted`, `banned` |\n| Alternative 2 | `null` |"
          },
          "mostLikelyHealthState": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "healthy",
              "limited",
              "restricted",
              "banned",
              null
            ],
            "description": "Specifies most likely health state for this platform ban safe health point.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `healthy` | Healthy. |\n| `limited` | Limited. |\n| `restricted` | Restricted. |\n| `banned` | Banned. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `healthy` or `limited` or `restricted` or `banned` |\n| Alternative 2 | `null` |"
          },
          "healthExplanation": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__BanSafeHealthExplanation"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies health explanation for this platform ban safe health point.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `penalties`, `factors`, `measuredGroups`, `missingGroups` |\n| Alternative 2 | `null` |"
          },
          "observedAccountState": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__BanSafeObservedAccountState"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies observed account state for this platform ban safe health point.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `state`: `healthy` or `limited` or `restricted` or `banned`; Field `source`: `account_check` or `restriction_event`; Required fields: `state`, `observedAt`, `source` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "health",
          "band",
          "healthSource",
          "healthEstimatorVersion",
          "healthModelVersion",
          "healthEvaluatedAt",
          "healthFeatureCoverage",
          "healthReliability",
          "healthUnavailableReason",
          "healthProbabilities",
          "mostLikelyHealthState",
          "healthExplanation",
          "observedAccountState"
        ]
      },
      "platform__BanSafeHealthHistory": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sessionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "session": {
            "type": "string",
            "description": "Identifier of the connected Polymorfa session."
          },
          "points": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/platform__BanSafeHealthPoint"
            },
            "description": "Points associated with this platform ban safe health history."
          }
        },
        "required": [
          "sessionId",
          "session",
          "points"
        ]
      },
      "platform__BanSafeEnforcementSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sessionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "session": {
            "type": "string",
            "description": "Identifier of the connected Polymorfa session."
          },
          "phoneNumber": {
            "type": "string",
            "description": "Phone number in international format."
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "rung": {
            "type": "string",
            "enum": [
              "none",
              "notify",
              "throttle",
              "block_cold",
              "suspend"
            ],
            "description": "Specifies rung for this platform ban safe enforcement summary.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `notify` | Notify. |\n| `throttle` | Throttle. |\n| `block_cold` | Block cold. |\n| `suspend` | Suspend. |"
          },
          "previousRung": {
            "type": "string",
            "enum": [
              "none",
              "notify",
              "throttle",
              "block_cold",
              "suspend"
            ],
            "description": "Specifies previous rung for this platform ban safe enforcement summary.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `notify` | Notify. |\n| `throttle` | Throttle. |\n| `block_cold` | Block cold. |\n| `suspend` | Suspend. |"
          },
          "organizationFloor": {
            "type": "string",
            "enum": [
              "none",
              "notify",
              "throttle",
              "block_cold",
              "suspend"
            ],
            "description": "Specifies organization floor for this platform ban safe enforcement summary.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `notify` | Notify. |\n| `throttle` | Throttle. |\n| `block_cold` | Block cold. |\n| `suspend` | Suspend. |"
          },
          "reason": {
            "type": "string",
            "description": "Reason for the reported state or outcome."
          },
          "source": {
            "type": "string",
            "enum": [
              "automatic",
              "operator"
            ],
            "description": "Specifies source for this platform ban safe enforcement summary.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `automatic` | Automatic. |\n| `operator` | Operator. |"
          },
          "throughputPerMinute": {
            "type": [
              "number",
              "null"
            ],
            "description": "Specifies throughput per minute for this platform ban safe enforcement summary.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
          },
          "blocksUnsolicited": {
            "type": "boolean",
            "description": "Whether blocks unsolicited."
          },
          "suspended": {
            "type": "boolean",
            "description": "Whether suspended."
          },
          "health": {
            "type": [
              "number",
              "null"
            ],
            "minimum": 0,
            "maximum": 100,
            "description": "Estimate of present account Health. Higher is healthier. Read healthSource, healthReliability, and healthFeatureCoverage with it.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `100` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `100` (inclusive) |"
          },
          "band": {
            "type": "string",
            "enum": [
              "good",
              "fair",
              "poor",
              "failing",
              "unknown"
            ],
            "description": "Specifies band for this platform ban safe enforcement summary.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `good` | Good. |\n| `fair` | Fair. |\n| `poor` | Poor. |\n| `failing` | Failing. |\n| `unknown` | Unknown. |"
          },
          "healthSource": {
            "type": "string",
            "enum": [
              "rules_v1",
              "ml_model",
              "unavailable"
            ],
            "description": "Estimator family. rules_v1 is deterministic; unavailable carries no numeric Health.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `rules_v1` | Rules v1. |\n| `ml_model` | Ml model. |\n| `unavailable` | Unavailable. |"
          },
          "healthEstimatorVersion": {
            "type": [
              "string",
              "null"
            ],
            "description": "Version of the estimator that produced Health.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "healthModelVersion": {
            "type": [
              "string",
              "null"
            ],
            "description": "Learned-model artifact version. Null for rules_v1.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "healthEvaluatedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for health evaluated at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "healthFeatureCoverage": {
            "type": [
              "number",
              "null"
            ],
            "minimum": 0,
            "maximum": 1,
            "description": "Specifies health feature coverage for this platform ban safe enforcement summary.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: `0` through `1` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `1` (inclusive) |"
          },
          "healthReliability": {
            "type": "string",
            "enum": [
              "rules_based",
              "validated",
              "unavailable"
            ],
            "description": "Support category, not a confidence score.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `rules_based` | Rules based. |\n| `validated` | Validated. |\n| `unavailable` | Unavailable. |"
          },
          "healthUnavailableReason": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "no_active_model",
              "invalid_active_model",
              "insufficient_fresh_features",
              null
            ],
            "description": "Specifies health unavailable reason for this platform ban safe enforcement summary.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `no_active_model` | No active model. |\n| `invalid_active_model` | Invalid active model. |\n| `insufficient_fresh_features` | Insufficient fresh features. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `no_active_model` or `invalid_active_model` or `insufficient_fresh_features` |\n| Alternative 2 | `null` |"
          },
          "healthProbabilities": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__BanSafeHealthProbabilities"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies health probabilities for this platform ban safe enforcement summary.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `healthy`, `limited`, `restricted`, `banned` |\n| Alternative 2 | `null` |"
          },
          "mostLikelyHealthState": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "healthy",
              "limited",
              "restricted",
              "banned",
              null
            ],
            "description": "Specifies most likely health state for this platform ban safe enforcement summary.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `healthy` | Healthy. |\n| `limited` | Limited. |\n| `restricted` | Restricted. |\n| `banned` | Banned. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `healthy` or `limited` or `restricted` or `banned` |\n| Alternative 2 | `null` |"
          },
          "healthExplanation": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__BanSafeHealthExplanation"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies health explanation for this platform ban safe enforcement summary.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `penalties`, `factors`, `measuredGroups`, `missingGroups` |\n| Alternative 2 | `null` |"
          },
          "observedAccountState": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__BanSafeObservedAccountState"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies observed account state for this platform ban safe enforcement summary.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `state`: `healthy` or `limited` or `restricted` or `banned`; Field `source`: `account_check` or `restriction_event`; Required fields: `state`, `observedAt`, `source` |\n| Alternative 2 | `null` |"
          },
          "enforcement": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__BanSafeNumberEnforcement"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies enforcement for this platform ban safe enforcement summary.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `rung`: `none` or `notify` or `throttle` or `block_cold` or `suspend`; Field `previousRung`: `none` or `notify` or `throttle` or `block_cold` or `suspend`; Field `organizationFloor`: `none` or `notify` or `throttle` or `block_cold` or `suspend`; Field `source`: `automatic` or `operator`; Field `appealState`: `none` or `requested` or `granted` or `denied`; Field `state`: `applied` or `applying`; Required fields: `rung`, `previousRung`, `organizationFloor`, `reason`, `source`, `throughputPerMinute`, `blocksUnsolicited`, `suspended`, `startedAt`, `eligibleLiftAt`, `exitProgress`, `blockingFindings`, `operatorHold`, `appealState`, `state` |\n| Alternative 2 | `null` |"
          },
          "blockingFindings": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Blocking findings associated with this platform ban safe enforcement summary."
          },
          "startedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for started at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "eligibleLiftAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for eligible lift at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "liftRequires": {
            "type": "string",
            "description": "Specifies lift requires for this platform ban safe enforcement summary."
          },
          "operatorHold": {
            "type": "boolean",
            "description": "Whether operator hold."
          },
          "appealState": {
            "type": "string",
            "enum": [
              "none",
              "requested",
              "granted",
              "denied"
            ],
            "description": "Specifies appeal state for this platform ban safe enforcement summary.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `requested` | Requested. |\n| `granted` | Granted. |\n| `denied` | Denied. |"
          },
          "state": {
            "type": "string",
            "enum": [
              "applied",
              "applying"
            ],
            "description": "Current lifecycle state of this resource.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `applied` | Applied. |\n| `applying` | Applying. |"
          }
        },
        "required": [
          "sessionId",
          "session",
          "phoneNumber",
          "projectId",
          "rung",
          "previousRung",
          "organizationFloor",
          "reason",
          "source",
          "throughputPerMinute",
          "blocksUnsolicited",
          "suspended",
          "health",
          "band",
          "healthSource",
          "healthEstimatorVersion",
          "healthModelVersion",
          "healthEvaluatedAt",
          "healthFeatureCoverage",
          "healthReliability",
          "healthUnavailableReason",
          "healthProbabilities",
          "mostLikelyHealthState",
          "healthExplanation",
          "observedAccountState",
          "blockingFindings",
          "startedAt",
          "eligibleLiftAt",
          "liftRequires",
          "operatorHold",
          "appealState",
          "state"
        ]
      },
      "platform__BanSafeIncident": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "sessionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "session": {
            "type": "string",
            "description": "Identifier of the connected Polymorfa session."
          },
          "phoneNumber": {
            "type": "string",
            "description": "Phone number in international format."
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "kind": {
            "type": "string",
            "enum": [
              "cap_warning",
              "cap_reached",
              "timelock",
              "temporary_ban",
              "permanent_ban",
              "connect_blocked",
              "customer_report"
            ],
            "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `cap_warning` | Cap warning. |\n| `cap_reached` | Cap reached. |\n| `timelock` | Timelock. |\n| `temporary_ban` | Temporary ban. |\n| `permanent_ban` | Permanent ban. |\n| `connect_blocked` | Connect blocked. |\n| `customer_report` | Customer report. |"
          },
          "source": {
            "type": "string",
            "enum": [
              "runtime",
              "customer"
            ],
            "description": "Specifies source for this platform ban safe incident.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `runtime` | Runtime. |\n| `customer` | Customer. |"
          },
          "resolution": {
            "type": "string",
            "description": "Specifies resolution for this platform ban safe incident."
          },
          "ambiguous": {
            "type": "boolean",
            "description": "Whether ambiguous."
          },
          "startedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for started at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "endsAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for ends at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "closedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for closed at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "closedBy": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies closed by for this platform ban safe incident.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "claimId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Identifier for the claim.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "note": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 500,
            "description": "Specifies note for this platform ban safe incident.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: At most `500` characters |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `500` characters |"
          },
          "reportedBy": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies reported by for this platform ban safe incident.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "id",
          "sessionId",
          "session",
          "phoneNumber",
          "projectId",
          "kind",
          "source",
          "resolution",
          "ambiguous",
          "startedAt",
          "endsAt",
          "note",
          "reportedBy",
          "createdAt",
          "closedAt",
          "closedBy",
          "claimId"
        ]
      },
      "platform__BanSafeIncidentReceipt": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "incidentId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the incident.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "created": {
            "type": "boolean",
            "description": "False when the same Idempotency-Key already recorded this report."
          },
          "sessionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "session": {
            "type": "string",
            "description": "Identifier of the connected Polymorfa session."
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for occurred at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "incidentId",
          "created",
          "sessionId",
          "session",
          "occurredAt"
        ]
      },
      "platform__BanSafeClaimEvidence": {
        "type": "object",
        "additionalProperties": false,
        "description": "Counts behind the attribution. Never a recipient, a message, or a device model.",
        "properties": {
          "attributionRuleVersion": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 1,
            "description": "Attribution rules used when the claim was filed. Null for claims filed before rule versioning.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `1` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
          },
          "windowDays": {
            "type": "integer",
            "minimum": 1,
            "description": "Specifies window days for this platform ban safe claim evidence.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
          },
          "deviceEvidence": {
            "type": "boolean",
            "description": "Whether ban insurance evidence collection is on for the project."
          },
          "otherDevices": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies other devices for this platform ban safe claim evidence.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "restrictedInWindow": {
            "type": "boolean",
            "description": "Whether Polymorfa was restricting this number's sending inside the window."
          },
          "criticalFindingDays": {
            "type": "integer",
            "minimum": 0,
            "description": "Days one safety check stayed at its most serious level inside the window.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "sharedConnection": {
            "type": "boolean",
            "description": "Whether this number shared its connection with numbers that were being restricted."
          },
          "measuredHours": {
            "type": "integer",
            "minimum": 0,
            "description": "Hours of measured activity Polymorfa holds for the window.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "attributionRuleVersion",
          "windowDays",
          "deviceEvidence",
          "otherDevices",
          "restrictedInWindow",
          "criticalFindingDays",
          "sharedConnection",
          "measuredHours"
        ]
      },
      "platform__BanSafeClaim": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "incidentId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the incident.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "sessionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "session": {
            "type": "string",
            "description": "Identifier of the connected Polymorfa session."
          },
          "phoneNumber": {
            "type": "string",
            "description": "Phone number in international format."
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "status": {
            "type": "string",
            "enum": [
              "filed",
              "under_review",
              "approved",
              "denied",
              "paid",
              "reversed"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `filed` | Filed. |\n| `under_review` | Under review. |\n| `approved` | Approved. |\n| `denied` | Denied. |\n| `paid` | Paid. |\n| `reversed` | Reversed. |"
          },
          "verdict": {
            "type": "string",
            "enum": [
              "other_device",
              "customer_conduct",
              "shared_network",
              "ours",
              "inconclusive"
            ],
            "description": "Specifies verdict for this platform ban safe claim.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `other_device` | Other device. |\n| `customer_conduct` | Customer conduct. |\n| `shared_network` | Shared network. |\n| `ours` | Ours. |\n| `inconclusive` | Inconclusive. |"
          },
          "windowStart": {
            "type": "string",
            "format": "date-time",
            "description": "Specifies window start for this platform ban safe claim.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "windowEnd": {
            "type": "string",
            "format": "date-time",
            "description": "Specifies window end for this platform ban safe claim.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "measuredCents": {
            "type": "number",
            "minimum": 0,
            "multipleOf": 0.000001,
            "description": "Credit quantity this number consumed inside the window, with up to six decimal places.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |\n| Increment | Multiple of `0.000001` |"
          },
          "capCents": {
            "type": "number",
            "minimum": 0,
            "multipleOf": 0.000001,
            "description": "Maximum credit quantity this claim can return, with up to six decimal places.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |\n| Increment | Multiple of `0.000001` |"
          },
          "amountCents": {
            "type": "number",
            "minimum": 0,
            "multipleOf": 0.000001,
            "description": "Credit quantity this claim returns, with up to six decimal places.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |\n| Increment | Multiple of `0.000001` |"
          },
          "evidence": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__BanSafeClaimEvidence"
              }
            ],
            "description": "Specifies evidence for this platform ban safe claim."
          },
          "summary": {
            "type": "string",
            "description": "Specifies summary for this platform ban safe claim."
          },
          "reason": {
            "type": "string",
            "description": "Reason for the reported state or outcome."
          },
          "decidedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for decided at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "paidAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for paid at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "id",
          "incidentId",
          "sessionId",
          "session",
          "phoneNumber",
          "projectId",
          "status",
          "verdict",
          "windowStart",
          "windowEnd",
          "measuredCents",
          "capCents",
          "amountCents",
          "evidence",
          "summary",
          "reason",
          "decidedAt",
          "paidAt",
          "createdAt"
        ]
      },
      "platform__ReportBanSafeIncidentInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "session": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for occurred at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "note": {
            "type": "string",
            "maxLength": 500,
            "description": "Specifies note for this platform report ban safe incident input.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `500` characters |"
          }
        },
        "required": [
          "session"
        ]
      },
      "platform__SafeModeSettings": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "presence": {
            "type": "string",
            "enum": [
              "dark",
              "online_while_sending",
              "online_hours"
            ],
            "description": "Specifies presence for this platform safe mode setting.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `dark` | Dark. |\n| `online_while_sending` | Online while sending. |\n| `online_hours` | Online hours. |"
          },
          "typing": {
            "type": "string",
            "enum": [
              "off",
              "before_text",
              "before_all"
            ],
            "description": "Specifies typing for this platform safe mode setting.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `before_text` | Before text. |\n| `before_all` | Before all. |"
          },
          "reads": {
            "type": "string",
            "enum": [
              "off",
              "replied_chats",
              "all_inbound"
            ],
            "description": "Specifies reads for this platform safe mode setting.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `replied_chats` | Replied chats. |\n| `all_inbound` | All inbound. |"
          },
          "pacing": {
            "type": "string",
            "enum": [
              "off",
              "jittered",
              "conversation"
            ],
            "description": "Specifies pacing for this platform safe mode setting.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `jittered` | Jittered. |\n| `conversation` | Conversation. |"
          },
          "onlineStart": {
            "type": "integer",
            "minimum": 0,
            "maximum": 23,
            "description": "Specifies online start for this platform safe mode setting.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `23` (inclusive) |"
          },
          "onlineEnd": {
            "type": "integer",
            "minimum": 0,
            "maximum": 23,
            "description": "Specifies online end for this platform safe mode setting.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `23` (inclusive) |"
          }
        },
        "required": [
          "presence",
          "typing",
          "reads",
          "pacing",
          "onlineStart",
          "onlineEnd"
        ]
      },
      "platform__SafeModeOverride": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "presence": {
            "type": "string",
            "enum": [
              "inherit",
              "dark",
              "online_while_sending",
              "online_hours"
            ],
            "description": "Specifies presence for this platform safe mode override.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inherit` | Inherit. |\n| `dark` | Dark. |\n| `online_while_sending` | Online while sending. |\n| `online_hours` | Online hours. |"
          },
          "typing": {
            "type": "string",
            "enum": [
              "inherit",
              "off",
              "before_text",
              "before_all"
            ],
            "description": "Specifies typing for this platform safe mode override.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inherit` | Inherit. |\n| `off` | Off. |\n| `before_text` | Before text. |\n| `before_all` | Before all. |"
          },
          "reads": {
            "type": "string",
            "enum": [
              "inherit",
              "off",
              "replied_chats",
              "all_inbound"
            ],
            "description": "Specifies reads for this platform safe mode override.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inherit` | Inherit. |\n| `off` | Off. |\n| `replied_chats` | Replied chats. |\n| `all_inbound` | All inbound. |"
          },
          "pacing": {
            "type": "string",
            "enum": [
              "inherit",
              "off",
              "jittered",
              "conversation"
            ],
            "description": "Specifies pacing for this platform safe mode override.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inherit` | Inherit. |\n| `off` | Off. |\n| `jittered` | Jittered. |\n| `conversation` | Conversation. |"
          }
        },
        "required": [
          "presence",
          "typing",
          "reads",
          "pacing"
        ]
      },
      "platform__SafeModeApplied": {
        "type": "object",
        "additionalProperties": false,
        "description": "What the number itself last reported it is running. An observation, not a claim.",
        "properties": {
          "observedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when Polymorfa observed this state.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "presence": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies presence for this platform safe mode applied.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "typing": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies typing for this platform safe mode applied.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "reads": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies reads for this platform safe mode applied.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "pacing": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies pacing for this platform safe mode applied.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "observedAt",
          "presence",
          "typing",
          "reads",
          "pacing"
        ]
      },
      "platform__ProjectSafeMode": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "ceiling": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__SafeModeSettings"
              }
            ],
            "description": "Specifies ceiling for this platform project safe mode."
          },
          "entitled": {
            "type": "boolean",
            "description": "Whether this project's plan includes BanSafe Lite, which Safe Mode is part of. When false, a request that raises a setting is refused."
          },
          "entitlementReason": {
            "type": [
              "string",
              "null"
            ],
            "description": "Why a raise would be refused. Null when the plan includes BanSafe Lite.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "projectId",
          "ceiling",
          "entitled",
          "entitlementReason"
        ]
      },
      "platform__SessionCapabilities": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "session": {
            "type": "string",
            "description": "The session name."
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "status": {
            "type": "string",
            "enum": [
              "synced",
              "unknown"
            ],
            "description": "`synced` when the values reflect WhatsApp's configuration for the account last linked to the number. `unknown` before the first sync, from the first sync attempt of another linked WhatsApp account until its configuration is synced, and when Polymorfa cannot tell whether the stored configuration belongs to the account linked now; every capability value is then null.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `synced` | Synced. |\n| `unknown` | Unknown. |"
          },
          "syncedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "When the configuration the values reflect was last read from WhatsApp. Null while `status` is `unknown`.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "checkedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "When Polymorfa last asked WhatsApp for the number's configuration, whether or not anything changed. Null before the first request.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "accountType": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "business",
              "personal",
              null
            ],
            "description": "The WhatsApp account type the values were evaluated for. Null when not known.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `business` | Business. |\n| `personal` | Personal. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `business` or `personal` |\n| Alternative 2 | `null` |"
          },
          "capabilities": {
            "type": "array",
            "maxItems": 100,
            "description": "Every capability, always in the same order. Ignore keys your app does not recognize; new keys can be added.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `100` items |",
            "items": {
              "$ref": "#/components/schemas/platform__SessionCapability"
            }
          }
        },
        "required": [
          "session",
          "projectId",
          "status",
          "syncedAt",
          "checkedAt",
          "accountType",
          "capabilities"
        ]
      },
      "platform__SessionCapability": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "key": {
            "type": "string",
            "pattern": "^[a-z][A-Za-z]*(\\.[a-z][A-Za-z]*)*$",
            "maxLength": 64,
            "description": "Stable capability identifier, for example `channels` or `messageEdit.windowSeconds`. A key never changes meaning; new keys can be added.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `64` characters |\n| Pattern | `^[a-z][A-Za-z]*(\\.[a-z][A-Za-z]*)*$` |"
          },
          "kind": {
            "type": "string",
            "enum": [
              "feature",
              "limit"
            ],
            "description": "`feature`: `value` is a boolean. `limit`: `value` is an integer in `unit`.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `feature` | Feature. |\n| `limit` | Limit. |"
          },
          "unit": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "seconds",
              "count",
              "characters",
              "members",
              null
            ],
            "description": "Unit of a limit. Null for a feature.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `seconds` | Seconds. |\n| `count` | Count. |\n| `characters` | Characters. |\n| `members` | Members. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `seconds` or `count` or `characters` or `members` |\n| Alternative 2 | `null` |"
          },
          "value": {
            "description": "Boolean for a feature, integer for a limit. Null whenever `status` is `unknown`, for a capability that depends on an account type that is not known, for a limit whose WhatsApp setting is not a usable number, and for a capability Polymorfa can no longer evaluate.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `boolean` |\n| Alternative 2 | Type: `integer` |",
            "anyOf": [
              {
                "type": [
                  "boolean",
                  "null"
                ]
              },
              {
                "type": [
                  "integer",
                  "null"
                ]
              }
            ]
          },
          "source": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "server",
              "client_default",
              "account_type",
              null
            ],
            "description": "`server`: every WhatsApp setting the value was evaluated from was sent by WhatsApp and used as sent. `client_default`: WhatsApp's own default or limit took part, because a setting was not sent or not usable, or WhatsApp caps or replaces the value it sent. `account_type`: the capability does not apply to this account type. Null when `value` is null.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `server` | Server. |\n| `client_default` | Client default. |\n| `account_type` | Account type. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `server` or `client_default` or `account_type` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "key",
          "kind",
          "unit",
          "value",
          "source"
        ]
      },
      "platform__SessionSafeMode": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "session": {
            "type": "string",
            "description": "Identifier of the connected Polymorfa session."
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "project": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__SafeModeSettings"
              }
            ],
            "description": "Specifies project for this platform session safe mode."
          },
          "override": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__SafeModeOverride"
              }
            ],
            "description": "Specifies override for this platform session safe mode."
          },
          "effective": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__SafeModeSettings"
              }
            ],
            "description": "Specifies effective for this platform session safe mode."
          },
          "applied": {
            "anyOf": [
              {
                "type": "object",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__SafeModeApplied"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies applied for this platform session safe mode.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `observedAt`, `presence`, `typing`, `reads`, `pacing` |\n| Alternative 2 | `null` |"
          },
          "mismatch": {
            "type": "boolean",
            "description": "True when the number reports something other than the policy in force."
          },
          "entitled": {
            "type": "boolean",
            "description": "Whether this number's plan includes BanSafe Lite, which Safe Mode is part of. When false, a request that raises a setting is refused."
          },
          "entitlementReason": {
            "type": [
              "string",
              "null"
            ],
            "description": "Why a raise would be refused. Null when the plan includes BanSafe Lite.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "session",
          "projectId",
          "project",
          "override",
          "effective",
          "applied",
          "mismatch",
          "entitled",
          "entitlementReason"
        ]
      },
      "platform__UpdateProjectSafeModeInput": {
        "type": "object",
        "additionalProperties": false,
        "description": "A partial update: send only the settings you want to change.",
        "properties": {
          "presence": {
            "type": "string",
            "enum": [
              "dark",
              "online_while_sending",
              "online_hours"
            ],
            "description": "Specifies presence for this platform update project safe mode input.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `dark` | Dark. |\n| `online_while_sending` | Online while sending. |\n| `online_hours` | Online hours. |"
          },
          "typing": {
            "type": "string",
            "enum": [
              "off",
              "before_text",
              "before_all"
            ],
            "description": "Specifies typing for this platform update project safe mode input.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `before_text` | Before text. |\n| `before_all` | Before all. |"
          },
          "reads": {
            "type": "string",
            "enum": [
              "off",
              "replied_chats",
              "all_inbound"
            ],
            "description": "Specifies reads for this platform update project safe mode input.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `replied_chats` | Replied chats. |\n| `all_inbound` | All inbound. |"
          },
          "pacing": {
            "type": "string",
            "enum": [
              "off",
              "jittered",
              "conversation"
            ],
            "description": "Specifies pacing for this platform update project safe mode input.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `jittered` | Jittered. |\n| `conversation` | Conversation. |"
          },
          "onlineStart": {
            "type": "integer",
            "minimum": 0,
            "maximum": 23,
            "description": "Specifies online start for this platform update project safe mode input.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `23` (inclusive) |"
          },
          "onlineEnd": {
            "type": "integer",
            "minimum": 0,
            "maximum": 23,
            "description": "Specifies online end for this platform update project safe mode input.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `23` (inclusive) |"
          }
        }
      },
      "platform__UpdateSessionSafeModeInput": {
        "type": "object",
        "additionalProperties": false,
        "description": "A partial update. `inherit` follows the project ceiling.",
        "properties": {
          "presence": {
            "type": "string",
            "enum": [
              "inherit",
              "dark",
              "online_while_sending",
              "online_hours"
            ],
            "description": "Specifies presence for this platform update session safe mode input.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inherit` | Inherit. |\n| `dark` | Dark. |\n| `online_while_sending` | Online while sending. |\n| `online_hours` | Online hours. |"
          },
          "typing": {
            "type": "string",
            "enum": [
              "inherit",
              "off",
              "before_text",
              "before_all"
            ],
            "description": "Specifies typing for this platform update session safe mode input.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inherit` | Inherit. |\n| `off` | Off. |\n| `before_text` | Before text. |\n| `before_all` | Before all. |"
          },
          "reads": {
            "type": "string",
            "enum": [
              "inherit",
              "off",
              "replied_chats",
              "all_inbound"
            ],
            "description": "Specifies reads for this platform update session safe mode input.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inherit` | Inherit. |\n| `off` | Off. |\n| `replied_chats` | Replied chats. |\n| `all_inbound` | All inbound. |"
          },
          "pacing": {
            "type": "string",
            "enum": [
              "inherit",
              "off",
              "jittered",
              "conversation"
            ],
            "description": "Specifies pacing for this platform update session safe mode input.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inherit` | Inherit. |\n| `off` | Off. |\n| `jittered` | Jittered. |\n| `conversation` | Conversation. |"
          }
        }
      },
      "platform__WarmupPlanSettings": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Whether every number in this project has a daily allowance."
          },
          "warmupDays": {
            "type": "integer",
            "minimum": 1,
            "maximum": 90,
            "description": "Days the ramp takes to reach the per-number daily cap.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `90` (inclusive) |"
          },
          "dailyStart": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2000,
            "description": "Messages a number may send on its first day.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `2000` (inclusive) |"
          }
        },
        "required": [
          "enabled",
          "warmupDays",
          "dailyStart"
        ]
      },
      "platform__WarmupCurvePoint": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "day": {
            "type": "integer",
            "minimum": 0,
            "description": "Days since the number's first proven activity.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "allowance": {
            "type": "integer",
            "minimum": 0,
            "description": "Messages allowed on that day.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "day",
          "allowance"
        ]
      },
      "platform__ProjectWarmupPlan": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "plan": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__WarmupPlanSettings"
              }
            ],
            "description": "Specifies plan for this platform project warmup plan."
          },
          "ceiling": {
            "type": "integer",
            "minimum": 1,
            "description": "The per-number daily cap the ramp climbs to.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
          },
          "curve": {
            "type": "array",
            "maxItems": 91,
            "items": {
              "$ref": "#/components/schemas/platform__WarmupCurvePoint"
            },
            "description": "The projected allowance day by day for a number whose health is good. A number in a lower health band gets less.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `91` items |"
          },
          "entitled": {
            "type": "boolean",
            "description": "Whether this project's plan includes BanSafe Lite, which the warm-up plan is part of. When false, turning the warm-up plan on is refused."
          },
          "entitlementReason": {
            "type": [
              "string",
              "null"
            ],
            "description": "Why turning the plan on would be refused. Null when the plan includes BanSafe Lite.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "projectId",
          "plan",
          "ceiling",
          "curve",
          "entitled",
          "entitlementReason"
        ]
      },
      "platform__UpdateProjectWarmupPlanInput": {
        "type": "object",
        "additionalProperties": false,
        "description": "A partial update: send only the settings you want to change.",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          },
          "warmupDays": {
            "type": "integer",
            "minimum": 1,
            "maximum": 90,
            "description": "Specifies warmup days for this platform update project warmup plan input.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `90` (inclusive) |"
          },
          "dailyStart": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2000,
            "description": "Specifies daily start for this platform update project warmup plan input.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `2000` (inclusive) |"
          }
        }
      },
      "platform__ProjectHealthPolicyIntegrations": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "emailConfigured": {
            "type": "boolean",
            "description": "Whether notification email delivery is configured."
          },
          "webhookConfigured": {
            "type": "boolean",
            "description": "Whether an enabled webhook exists for this team or project."
          }
        },
        "required": [
          "emailConfigured",
          "webhookConfigured"
        ]
      },
      "platform__ProjectHealthPolicy": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "version": {
            "type": "integer",
            "minimum": 0,
            "description": "Revision required by the next update.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          },
          "threshold": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100,
            "description": "Actions trigger only when an available health estimate is below this value.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `100` (inclusive) |"
          },
          "sessionAction": {
            "type": "string",
            "enum": [
              "none",
              "stop",
              "slow_down",
              "log_out"
            ],
            "description": "Specifies session action for this platform project health policy.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `stop` | Stop. |\n| `slow_down` | Slow down. |\n| `log_out` | Log out. |"
          },
          "slowDownMps": {
            "type": [
              "number",
              "null"
            ],
            "exclusiveMinimum": 0,
            "description": "Specifies slow down mps for this platform project health policy.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: Greater than `0` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | Greater than `0` |"
          },
          "emailNotification": {
            "type": "boolean",
            "description": "Whether email notification."
          },
          "webhookNotification": {
            "type": "boolean",
            "description": "Whether webhook notification."
          },
          "integrations": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__ProjectHealthPolicyIntegrations"
              }
            ],
            "description": "Specifies integrations for this platform project health policy."
          }
        },
        "required": [
          "projectId",
          "version",
          "enabled",
          "threshold",
          "sessionAction",
          "slowDownMps",
          "emailNotification",
          "webhookNotification",
          "integrations"
        ]
      },
      "platform__UpdateProjectHealthPolicyInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies version for this platform update project health policy input.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          },
          "threshold": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100,
            "description": "Specifies threshold for this platform update project health policy input.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `100` (inclusive) |"
          },
          "sessionAction": {
            "type": "string",
            "enum": [
              "none",
              "stop",
              "slow_down",
              "log_out"
            ],
            "description": "Specifies session action for this platform update project health policy input.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `stop` | Stop. |\n| `slow_down` | Slow down. |\n| `log_out` | Log out. |"
          },
          "slowDownMps": {
            "type": [
              "number",
              "null"
            ],
            "exclusiveMinimum": 0,
            "description": "Specifies slow down mps for this platform update project health policy input.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number`; Numeric value: Greater than `0` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | Greater than `0` |"
          },
          "emailNotification": {
            "type": "boolean",
            "description": "Whether email notification."
          },
          "webhookNotification": {
            "type": "boolean",
            "description": "Whether webhook notification."
          }
        },
        "required": [
          "version",
          "enabled",
          "threshold",
          "sessionAction",
          "slowDownMps",
          "emailNotification",
          "webhookNotification"
        ]
      },
      "platform__WebhookRetryPolicyInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "maximumAttempts": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "description": "Specifies maximum attempts for this platform webhook retry policy input.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `10` (inclusive) |"
          },
          "backoff": {
            "type": "string",
            "enum": [
              "constant",
              "linear",
              "exponential"
            ],
            "description": "Specifies backoff for this platform webhook retry policy input.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `constant` | Constant. |\n| `linear` | Linear. |\n| `exponential` | Exponential. |"
          },
          "initialDelaySeconds": {
            "type": "integer",
            "minimum": 1,
            "maximum": 3600,
            "description": "Specifies initial delay seconds for this platform webhook retry policy input.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `3600` (inclusive) |"
          }
        },
        "required": [
          "maximumAttempts",
          "backoff",
          "initialDelaySeconds"
        ]
      },
      "platform__WebhookRetryPolicy": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "maximumAttempts": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "description": "Specifies maximum attempts for this platform webhook retry policy.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `10` (inclusive) |"
          },
          "backoff": {
            "type": "string",
            "enum": [
              "constant",
              "linear",
              "exponential"
            ],
            "description": "Specifies backoff for this platform webhook retry policy.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `constant` | Constant. |\n| `linear` | Linear. |\n| `exponential` | Exponential. |"
          },
          "initialDelaySeconds": {
            "type": "integer",
            "minimum": 1,
            "maximum": 3600,
            "description": "Specifies initial delay seconds for this platform webhook retry policy.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `3600` (inclusive) |"
          }
        },
        "required": [
          "maximumAttempts",
          "backoff",
          "initialDelaySeconds"
        ]
      },
      "platform__WebhookHeaderInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "pattern": "^[!#$%&'*+\\-.^_`|~0-9A-Za-z]+$",
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |\n| Pattern | ``^[!#$%&'*+\\-.^_`\\|~0-9A-Za-z]+$`` |"
          },
          "value": {
            "type": "string",
            "maxLength": 4096,
            "pattern": "^(?![\\s\\S]*[\\u0000-\\u0008\\u000A-\\u001F\\u007F])[\\s\\S]*$",
            "writeOnly": true,
            "description": "Encrypted write-only HTTP field value. Limited to 4096 UTF-8 bytes. Line breaks, NUL, and other control characters except horizontal tab are rejected.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `4096` characters |\n| Pattern | `^(?![\\s\\S]*[\\u0000-\\u0008\\u000A-\\u001F\\u007F])[\\s\\S]*$` |"
          }
        },
        "required": [
          "name",
          "value"
        ]
      },
      "platform__WebhookHeaderMetadata": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          }
        },
        "required": [
          "name"
        ]
      },
      "platform__WebhookSigningSecretMetadata": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 1,
            "description": "Specifies version for this platform webhook signing secret metadata.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "previousValidUntil": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Specifies previous valid until for this platform webhook signing secret metadata.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "version",
          "createdAt",
          "previousValidUntil"
        ]
      },
      "platform__CreateOrganizationWebhookInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "maxLength": 2048,
            "description": "URL associated with this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `2048` characters |\n| Format | `uri` |"
          },
          "eventTypes": {
            "description": "Names reserved for internal use cannot be newly subscribed. Existing stored entries may be preserved during updates but never match deliveries.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `100` items |\n| Duplicates | Not accepted; every array item must be unique |\n| Item string length | `1` through `128` characters |",
            "type": "array",
            "minItems": 1,
            "maxItems": 100,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            }
          },
          "enabled": {
            "type": "boolean",
            "default": true,
            "description": "Whether this feature is enabled."
          },
          "format": {
            "type": "string",
            "enum": [
              "native",
              "meta"
            ],
            "default": "native",
            "description": "Specifies format for this platform create organization webhook input.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `native` | Native. |\n| `meta` | Meta. |"
          },
          "retryPolicy": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__WebhookRetryPolicyInput"
              }
            ],
            "description": "Specifies retry policy for this platform create organization webhook input."
          },
          "phoneOfflineStartDay": {
            "type": "integer",
            "minimum": 7,
            "maximum": 13,
            "default": 10,
            "description": "First day without the phone on which this endpoint receives session.phone_offline. WhatsApp signs the linked device out on day 14. On PATCH, omission preserves the stored value. To stop the warning, remove session.phone_offline from eventTypes.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `7` through `13` (inclusive) |"
          },
          "headers": {
            "type": "array",
            "maxItems": 10,
            "items": {
              "$ref": "#/components/schemas/platform__WebhookHeaderInput"
            },
            "description": "HTTP headers attached to the outgoing request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `10` items |"
          }
        },
        "required": [
          "url",
          "eventTypes"
        ]
      },
      "platform__CreateProjectWebhookInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "maxLength": 2048,
            "description": "URL associated with this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `2048` characters |\n| Format | `uri` |"
          },
          "eventTypes": {
            "description": "Names reserved for internal use cannot be newly subscribed. Existing stored entries may be preserved during updates but never match deliveries.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `100` items |\n| Duplicates | Not accepted; every array item must be unique |\n| Item string length | `1` through `128` characters |",
            "type": "array",
            "minItems": 1,
            "maxItems": 100,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            }
          },
          "enabled": {
            "type": "boolean",
            "default": true,
            "description": "Whether this feature is enabled."
          },
          "format": {
            "type": "string",
            "enum": [
              "native",
              "meta"
            ],
            "default": "native",
            "description": "Specifies format for this platform create project webhook input.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `native` | Native. |\n| `meta` | Meta. |"
          },
          "retryPolicy": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__WebhookRetryPolicyInput"
              }
            ],
            "description": "Specifies retry policy for this platform create project webhook input."
          },
          "phoneOfflineStartDay": {
            "type": "integer",
            "minimum": 7,
            "maximum": 13,
            "default": 10,
            "description": "First day without the phone on which this endpoint receives session.phone_offline. WhatsApp signs the linked device out on day 14. On PATCH, omission preserves the stored value. To stop the warning, remove session.phone_offline from eventTypes.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `7` through `13` (inclusive) |"
          },
          "headers": {
            "type": "array",
            "maxItems": 10,
            "items": {
              "$ref": "#/components/schemas/platform__WebhookHeaderInput"
            },
            "description": "HTTP headers attached to the outgoing request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `10` items |"
          }
        },
        "required": [
          "url",
          "eventTypes"
        ]
      },
      "platform__UpdateOrganizationWebhookInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "maxLength": 2048,
            "description": "URL associated with this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `2048` characters |\n| Format | `uri` |"
          },
          "eventTypes": {
            "description": "Names reserved for internal use cannot be newly subscribed. Existing stored entries may be preserved during updates but never match deliveries.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `100` items |\n| Duplicates | Not accepted; every array item must be unique |\n| Item string length | `1` through `128` characters |",
            "type": "array",
            "minItems": 1,
            "maxItems": 100,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            }
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          },
          "format": {
            "type": "string",
            "enum": [
              "native",
              "meta"
            ],
            "description": "Specifies format for this platform update organization webhook input.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `native` | Native. |\n| `meta` | Meta. |"
          },
          "retryPolicy": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__WebhookRetryPolicyInput"
              }
            ],
            "description": "Specifies retry policy for this platform update organization webhook input."
          },
          "phoneOfflineStartDay": {
            "type": "integer",
            "minimum": 7,
            "maximum": 13,
            "description": "First day without the phone on which this endpoint receives session.phone_offline. WhatsApp signs the linked device out on day 14. On PATCH, omission preserves the stored value. To stop the warning, remove session.phone_offline from eventTypes.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `7` through `13` (inclusive) |"
          },
          "headers": {
            "type": "array",
            "maxItems": 10,
            "items": {
              "$ref": "#/components/schemas/platform__WebhookHeaderInput"
            },
            "description": "HTTP headers attached to the outgoing request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `10` items |"
          }
        },
        "minProperties": 1
      },
      "platform__UpdateProjectWebhookInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "maxLength": 2048,
            "description": "URL associated with this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `2048` characters |\n| Format | `uri` |"
          },
          "eventTypes": {
            "description": "Names reserved for internal use cannot be newly subscribed. Existing stored entries may be preserved during updates but never match deliveries.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `100` items |\n| Duplicates | Not accepted; every array item must be unique |\n| Item string length | `1` through `128` characters |",
            "type": "array",
            "minItems": 1,
            "maxItems": 100,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            }
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          },
          "format": {
            "type": "string",
            "enum": [
              "native",
              "meta"
            ],
            "description": "Specifies format for this platform update project webhook input.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `native` | Native. |\n| `meta` | Meta. |"
          },
          "retryPolicy": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__WebhookRetryPolicyInput"
              }
            ],
            "description": "Specifies retry policy for this platform update project webhook input."
          },
          "phoneOfflineStartDay": {
            "type": "integer",
            "minimum": 7,
            "maximum": 13,
            "description": "First day without the phone on which this endpoint receives session.phone_offline. WhatsApp signs the linked device out on day 14. On PATCH, omission preserves the stored value. To stop the warning, remove session.phone_offline from eventTypes.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `7` through `13` (inclusive) |"
          },
          "headers": {
            "type": "array",
            "maxItems": 10,
            "items": {
              "$ref": "#/components/schemas/platform__WebhookHeaderInput"
            },
            "description": "HTTP headers attached to the outgoing request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `10` items |"
          }
        },
        "minProperties": 1
      },
      "platform__RotateWebhookSecretInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "overlapSeconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 86400,
            "default": 3600,
            "description": "Specifies overlap seconds for this platform rotate webhook secret input.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `86400` (inclusive) |"
          }
        }
      },
      "platform__OrganizationWebhook": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "owner": {
            "type": "string",
            "enum": [
              "organization"
            ],
            "description": "Specifies owner for this platform organization webhook.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `organization` | Organization. |"
          },
          "projectId": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              null
            ],
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "url": {
            "type": "string",
            "format": "uri",
            "maxLength": 2048,
            "description": "URL associated with this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `2048` characters |\n| Format | `uri` |"
          },
          "eventTypes": {
            "type": "array",
            "minItems": 1,
            "maxItems": 100,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "description": "Event types associated with this platform organization webhook.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `100` items |\n| Duplicates | Not accepted; every array item must be unique |\n| Item string length | `1` through `128` characters |"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          },
          "format": {
            "type": "string",
            "enum": [
              "native",
              "meta"
            ],
            "description": "Specifies format for this platform organization webhook.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `native` | Native. |\n| `meta` | Meta. |"
          },
          "retryPolicy": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__WebhookRetryPolicy"
              }
            ],
            "description": "Specifies retry policy for this platform organization webhook."
          },
          "phoneOfflineStartDay": {
            "type": "integer",
            "minimum": 7,
            "maximum": 13,
            "description": "First day without the phone on which this endpoint receives session.phone_offline.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `7` through `13` (inclusive) |"
          },
          "headers": {
            "type": "array",
            "maxItems": 10,
            "items": {
              "$ref": "#/components/schemas/platform__WebhookHeaderMetadata"
            },
            "description": "HTTP headers attached to the outgoing request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `10` items |"
          },
          "secret": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__WebhookSigningSecretMetadata"
              }
            ],
            "description": "Specifies secret for this platform organization webhook."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was last updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "id",
          "organizationId",
          "owner",
          "projectId",
          "url",
          "eventTypes",
          "enabled",
          "format",
          "retryPolicy",
          "phoneOfflineStartDay",
          "headers",
          "secret",
          "createdAt",
          "updatedAt"
        ]
      },
      "platform__ProjectWebhook": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "owner": {
            "type": "string",
            "enum": [
              "project"
            ],
            "description": "Specifies owner for this platform project webhook.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `project` | Project. |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "url": {
            "type": "string",
            "format": "uri",
            "maxLength": 2048,
            "description": "URL associated with this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `2048` characters |\n| Format | `uri` |"
          },
          "eventTypes": {
            "type": "array",
            "minItems": 1,
            "maxItems": 100,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "description": "Event types associated with this platform project webhook.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `100` items |\n| Duplicates | Not accepted; every array item must be unique |\n| Item string length | `1` through `128` characters |"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          },
          "format": {
            "type": "string",
            "enum": [
              "native",
              "meta"
            ],
            "description": "Specifies format for this platform project webhook.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `native` | Native. |\n| `meta` | Meta. |"
          },
          "retryPolicy": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__WebhookRetryPolicy"
              }
            ],
            "description": "Specifies retry policy for this platform project webhook."
          },
          "phoneOfflineStartDay": {
            "type": "integer",
            "minimum": 7,
            "maximum": 13,
            "description": "First day without the phone on which this endpoint receives session.phone_offline.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `7` through `13` (inclusive) |"
          },
          "headers": {
            "type": "array",
            "maxItems": 10,
            "items": {
              "$ref": "#/components/schemas/platform__WebhookHeaderMetadata"
            },
            "description": "HTTP headers attached to the outgoing request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `10` items |"
          },
          "secret": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__WebhookSigningSecretMetadata"
              }
            ],
            "description": "Specifies secret for this platform project webhook."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was last updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "id",
          "organizationId",
          "owner",
          "projectId",
          "url",
          "eventTypes",
          "enabled",
          "format",
          "retryPolicy",
          "phoneOfflineStartDay",
          "headers",
          "secret",
          "createdAt",
          "updatedAt"
        ]
      },
      "platform__OrganizationWebhookCreationReceipt": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "webhook": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__OrganizationWebhook"
              }
            ],
            "description": "Specifies webhook for this platform organization webhook creation receipt."
          },
          "operationId": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              null
            ],
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "idempotency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__IdempotencyReceipt"
              }
            ],
            "description": "Specifies idempotency for this platform organization webhook creation receipt."
          },
          "secret": {
            "type": [
              "string",
              "null"
            ],
            "writeOnly": true,
            "description": "Specifies secret for this platform organization webhook creation receipt.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "secretAvailable": {
            "type": "boolean",
            "description": "Whether secret available."
          }
        },
        "required": [
          "webhook",
          "operationId",
          "idempotency",
          "secret",
          "secretAvailable"
        ]
      },
      "platform__ProjectWebhookCreationReceipt": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "webhook": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__ProjectWebhook"
              }
            ],
            "description": "Specifies webhook for this platform project webhook creation receipt."
          },
          "operationId": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              null
            ],
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "idempotency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__IdempotencyReceipt"
              }
            ],
            "description": "Specifies idempotency for this platform project webhook creation receipt."
          },
          "secret": {
            "type": [
              "string",
              "null"
            ],
            "writeOnly": true,
            "description": "Specifies secret for this platform project webhook creation receipt.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "secretAvailable": {
            "type": "boolean",
            "description": "Whether secret available."
          }
        },
        "required": [
          "webhook",
          "operationId",
          "idempotency",
          "secret",
          "secretAvailable"
        ]
      },
      "platform__OrganizationWebhookMutationReceipt": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "webhook": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__OrganizationWebhook"
              }
            ],
            "description": "Specifies webhook for this platform organization webhook mutation receipt."
          },
          "operationId": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              null
            ],
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "idempotency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__IdempotencyReceipt"
              }
            ],
            "description": "Specifies idempotency for this platform organization webhook mutation receipt."
          }
        },
        "required": [
          "webhook",
          "operationId",
          "idempotency"
        ]
      },
      "platform__ProjectWebhookMutationReceipt": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "webhook": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__ProjectWebhook"
              }
            ],
            "description": "Specifies webhook for this platform project webhook mutation receipt."
          },
          "operationId": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              null
            ],
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "idempotency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__IdempotencyReceipt"
              }
            ],
            "description": "Specifies idempotency for this platform project webhook mutation receipt."
          }
        },
        "required": [
          "webhook",
          "operationId",
          "idempotency"
        ]
      },
      "platform__OrganizationWebhookDeletionReceipt": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "webhookId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the webhook.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "deleted": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether deleted.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "operationId": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              null
            ],
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "idempotency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__IdempotencyReceipt"
              }
            ],
            "description": "Specifies idempotency for this platform organization webhook deletion receipt."
          }
        },
        "required": [
          "webhookId",
          "deleted",
          "operationId",
          "idempotency"
        ]
      },
      "platform__ProjectWebhookDeletionReceipt": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "webhookId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the webhook.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "deleted": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether deleted.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "operationId": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              null
            ],
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "idempotency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__IdempotencyReceipt"
              }
            ],
            "description": "Specifies idempotency for this platform project webhook deletion receipt."
          }
        },
        "required": [
          "webhookId",
          "deleted",
          "operationId",
          "idempotency"
        ]
      },
      "platform__OrganizationWebhookSecretRotationReceipt": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "webhookId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the webhook.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "operationId": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              null
            ],
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "secret": {
            "type": [
              "string",
              "null"
            ],
            "writeOnly": true,
            "description": "Specifies secret for this platform organization webhook secret rotation receipt.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "secretAvailable": {
            "type": "boolean",
            "description": "Whether secret available."
          },
          "secretMetadata": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__WebhookSigningSecretMetadata"
              }
            ],
            "description": "Specifies secret metadata for this platform organization webhook secret rotation receipt."
          },
          "idempotency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__IdempotencyReceipt"
              }
            ],
            "description": "Specifies idempotency for this platform organization webhook secret rotation receipt."
          }
        },
        "required": [
          "webhookId",
          "operationId",
          "secret",
          "secretAvailable",
          "secretMetadata",
          "idempotency"
        ]
      },
      "platform__ProjectWebhookSecretRotationReceipt": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "webhookId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the webhook.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "operationId": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              null
            ],
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "secret": {
            "type": [
              "string",
              "null"
            ],
            "writeOnly": true,
            "description": "Specifies secret for this platform project webhook secret rotation receipt.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "secretAvailable": {
            "type": "boolean",
            "description": "Whether secret available."
          },
          "secretMetadata": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__WebhookSigningSecretMetadata"
              }
            ],
            "description": "Specifies secret metadata for this platform project webhook secret rotation receipt."
          },
          "idempotency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__IdempotencyReceipt"
              }
            ],
            "description": "Specifies idempotency for this platform project webhook secret rotation receipt."
          }
        },
        "required": [
          "webhookId",
          "operationId",
          "secret",
          "secretAvailable",
          "secretMetadata",
          "idempotency"
        ]
      },
      "platform__EncodedEventPayload": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "encoding": {
            "type": "string",
            "enum": [
              "base64"
            ],
            "description": "Specifies encoding for this platform encoded event payload.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `base64` | Base64. |"
          },
          "contentType": {
            "type": "string",
            "enum": [
              "application/json"
            ],
            "description": "IANA media type that matches the payload.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `application/json` | Application/json. |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Media type | IANA `type/subtype` value matching the payload, such as `image/jpeg`, `video/mp4`, `audio/ogg`, or `application/pdf` |"
          },
          "data": {
            "type": "string",
            "format": "byte",
            "maxLength": 87384,
            "description": "Canonical base64 for the complete native webhook body; decoded bytes are limited to 65,536 bytes.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `87384` characters |\n| Format | `byte` |"
          }
        },
        "required": [
          "encoding",
          "contentType",
          "data"
        ]
      },
      "platform__OrganizationEvent": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              null
            ],
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "type": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          },
          "source": {
            "type": "string",
            "enum": [
              "runtime",
              "platform",
              "test"
            ],
            "description": "Specifies source for this platform organization event.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `runtime` | Runtime. |\n| `platform` | Platform. |\n| `test` | Test. |"
          },
          "environment": {
            "type": "string",
            "enum": [
              "development",
              "production"
            ],
            "description": "Specifies environment for this platform organization event.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `development` | Development. |\n| `production` | Production. |"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "payloadAvailability": {
            "type": "string",
            "enum": [
              "available",
              "not_retained",
              "expired",
              "redacted",
              "unavailable"
            ],
            "description": "Specifies payload availability for this platform organization event.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `available` | Available. |\n| `not_retained` | Not retained. |\n| `expired` | Expired. |\n| `redacted` | Redacted. |\n| `unavailable` | Unavailable. |"
          },
          "payload": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__EncodedEventPayload"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Structured payload carried by this event or operation.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `encoding`: `base64`; Field `contentType`: `application/json`; Required fields: `encoding`, `contentType`, `data` |\n| Alternative 2 | `null` |"
          },
          "replayableUntil": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Specifies replayable until for this platform organization event.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "metadataExpiresAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for metadata expires at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "id",
          "organizationId",
          "projectId",
          "type",
          "source",
          "environment",
          "createdAt",
          "payloadAvailability",
          "payload",
          "replayableUntil",
          "metadataExpiresAt"
        ]
      },
      "platform__ProjectEvent": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "type": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          },
          "source": {
            "type": "string",
            "enum": [
              "runtime",
              "platform",
              "test"
            ],
            "description": "Specifies source for this platform project event.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `runtime` | Runtime. |\n| `platform` | Platform. |\n| `test` | Test. |"
          },
          "environment": {
            "type": "string",
            "enum": [
              "development",
              "production"
            ],
            "description": "Specifies environment for this platform project event.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `development` | Development. |\n| `production` | Production. |"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "payloadAvailability": {
            "type": "string",
            "enum": [
              "available",
              "not_retained",
              "expired",
              "redacted",
              "unavailable"
            ],
            "description": "Specifies payload availability for this platform project event.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `available` | Available. |\n| `not_retained` | Not retained. |\n| `expired` | Expired. |\n| `redacted` | Redacted. |\n| `unavailable` | Unavailable. |"
          },
          "payload": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__EncodedEventPayload"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Structured payload carried by this event or operation.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `encoding`: `base64`; Field `contentType`: `application/json`; Required fields: `encoding`, `contentType`, `data` |\n| Alternative 2 | `null` |"
          },
          "replayableUntil": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Specifies replayable until for this platform project event.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "metadataExpiresAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for metadata expires at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "id",
          "organizationId",
          "projectId",
          "type",
          "source",
          "environment",
          "createdAt",
          "payloadAvailability",
          "payload",
          "replayableUntil",
          "metadataExpiresAt"
        ]
      },
      "platform__RequestLog": {
        "type": "object",
        "additionalProperties": false,
        "description": "One API or MCP request. IP addresses, user agents, headers and bodies are never included.",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "When the request was recorded.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "method": {
            "type": "string",
            "description": "HTTP method."
          },
          "route": {
            "type": "string",
            "description": "Matched route pattern, for example `/messaging/:session/messages`. Path values are not included."
          },
          "status": {
            "type": [
              "integer",
              "null"
            ],
            "description": "HTTP response status.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
          },
          "durationMs": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Specifies duration ms for this platform request log.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
          },
          "result": {
            "type": "string",
            "enum": [
              "success",
              "failure"
            ],
            "description": "`failure` for any status of 400 or above.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `success` | Success. |\n| `failure` | Failure. |"
          },
          "source": {
            "type": "string",
            "enum": [
              "api",
              "mcp"
            ],
            "description": "Specifies source for this platform request log.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `api` | Api. |\n| `mcp` | Mcp. |"
          },
          "requestId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Value of the `X-Request-Id` response header.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "traceId": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^[0-9a-f]{32}$",
            "description": "W3C trace ID, also returned in the `X-Trace-Id` response header. When you send a valid `traceparent` header, this is your trace ID.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Pattern: `^[0-9a-f]{32}$` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[0-9a-f]{32}$` |"
          },
          "errorCode": {
            "type": [
              "string",
              "null"
            ],
            "description": "Error code from the response body of a failed request.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "mcpTool": {
            "type": [
              "string",
              "null"
            ],
            "description": "MCP tool name for requests made through MCP.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "credential": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "description": "Credential that made the request. Client tokens have no listed record, so their `id` and `last4` are null. Null when the key or token no longer exists.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `type`: `team_key` or `project_token` or `client_token`; Required fields: `type`, `id`, `last4` |\n| Alternative 2 | `null` |",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "team_key",
                  "project_token",
                  "client_token"
                ],
                "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `team_key` | Team key. |\n| `project_token` | Project token. |\n| `client_token` | Client token. |"
              },
              "id": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid",
                "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
              },
              "last4": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Specifies last4 for this credential.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
              }
            },
            "required": [
              "type",
              "id",
              "last4"
            ]
          }
        },
        "required": [
          "id",
          "projectId",
          "createdAt",
          "method",
          "route",
          "status",
          "durationMs",
          "result",
          "source",
          "requestId",
          "traceId",
          "errorCode",
          "mcpTool",
          "credential"
        ]
      },
      "platform__RequestLogPageMetadata": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "nextCursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Pass as `cursor` to list older requests.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether more."
          },
          "followCursor": {
            "type": "string",
            "description": "Pass as `after` to list requests newer than this page. Valid for 24 hours."
          }
        },
        "required": [
          "nextCursor",
          "hasMore",
          "followCursor"
        ]
      },
      "platform__OrganizationWebhookDelivery": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              null
            ],
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "eventId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "webhookId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the webhook.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "delivering",
              "retrying",
              "succeeded",
              "failed"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending` | Pending. |\n| `delivering` | Delivering. |\n| `retrying` | Retrying. |\n| `succeeded` | Succeeded. |\n| `failed` | Failed. |"
          },
          "attemptCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of attempts.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "capabilities": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "retryable": {
                "type": "boolean",
                "description": "Whether retryable."
              }
            },
            "required": [
              "retryable"
            ],
            "description": "Structured capabilities values for this platform organization webhook delivery."
          },
          "payloadAvailability": {
            "type": "string",
            "enum": [
              "available",
              "not_retained",
              "expired",
              "redacted",
              "unavailable"
            ],
            "description": "Specifies payload availability for this platform organization webhook delivery.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `available` | Available. |\n| `not_retained` | Not retained. |\n| `expired` | Expired. |\n| `redacted` | Redacted. |\n| `unavailable` | Unavailable. |"
          },
          "replayableUntil": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Specifies replayable until for this platform organization webhook delivery.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "metadataExpiresAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for metadata expires at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "nextAttemptAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for next attempt at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "lastAttemptAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for last attempt at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "completedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "ISO 8601 timestamp when this operation completed.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was last updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "lastOutcome": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "properties": {
              "statusCode": {
                "type": [
                  "integer",
                  "null"
                ],
                "minimum": 100,
                "maximum": 599,
                "description": "Machine-readable status code for this last outcome.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `100` through `599` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `100` through `599` (inclusive) |"
              },
              "errorCode": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Machine-readable error code for this last outcome.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
              }
            },
            "required": [
              "statusCode",
              "errorCode"
            ],
            "description": "Structured last outcome values for this platform organization webhook delivery.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `statusCode`, `errorCode` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "id",
          "organizationId",
          "projectId",
          "eventId",
          "webhookId",
          "status",
          "attemptCount",
          "capabilities",
          "payloadAvailability",
          "replayableUntil",
          "metadataExpiresAt",
          "nextAttemptAt",
          "lastAttemptAt",
          "completedAt",
          "createdAt",
          "updatedAt",
          "lastOutcome"
        ]
      },
      "platform__ProjectWebhookDelivery": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "eventId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "webhookId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the webhook.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "delivering",
              "retrying",
              "succeeded",
              "failed"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending` | Pending. |\n| `delivering` | Delivering. |\n| `retrying` | Retrying. |\n| `succeeded` | Succeeded. |\n| `failed` | Failed. |"
          },
          "attemptCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of attempts.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "capabilities": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "retryable": {
                "type": "boolean",
                "description": "Whether retryable."
              }
            },
            "required": [
              "retryable"
            ],
            "description": "Structured capabilities values for this platform project webhook delivery."
          },
          "payloadAvailability": {
            "type": "string",
            "enum": [
              "available",
              "not_retained",
              "expired",
              "redacted",
              "unavailable"
            ],
            "description": "Specifies payload availability for this platform project webhook delivery.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `available` | Available. |\n| `not_retained` | Not retained. |\n| `expired` | Expired. |\n| `redacted` | Redacted. |\n| `unavailable` | Unavailable. |"
          },
          "replayableUntil": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Specifies replayable until for this platform project webhook delivery.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "metadataExpiresAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for metadata expires at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "nextAttemptAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for next attempt at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "lastAttemptAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for last attempt at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "completedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "ISO 8601 timestamp when this operation completed.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was last updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "lastOutcome": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "properties": {
              "statusCode": {
                "type": [
                  "integer",
                  "null"
                ],
                "minimum": 100,
                "maximum": 599,
                "description": "Machine-readable status code for this last outcome.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `100` through `599` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `100` through `599` (inclusive) |"
              },
              "errorCode": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Machine-readable error code for this last outcome.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
              }
            },
            "required": [
              "statusCode",
              "errorCode"
            ],
            "description": "Structured last outcome values for this platform project webhook delivery.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `statusCode`, `errorCode` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "id",
          "organizationId",
          "projectId",
          "eventId",
          "webhookId",
          "status",
          "attemptCount",
          "capabilities",
          "payloadAvailability",
          "replayableUntil",
          "metadataExpiresAt",
          "nextAttemptAt",
          "lastAttemptAt",
          "completedAt",
          "createdAt",
          "updatedAt",
          "lastOutcome"
        ]
      },
      "platform__OrganizationWebhookDeliveryAttempt": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              null
            ],
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "deliveryId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the delivery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "number": {
            "type": "integer",
            "minimum": 1,
            "description": "Specifies number for this platform organization webhook delivery attempt.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "delivering",
              "succeeded",
              "failed"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending` | Pending. |\n| `delivering` | Delivering. |\n| `succeeded` | Succeeded. |\n| `failed` | Failed. |"
          },
          "startedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for started at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "completedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "ISO 8601 timestamp when this operation completed.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "nextRetryAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for next retry at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "durationMs": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "description": "Specifies duration ms for this platform organization webhook delivery attempt.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "statusCode": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 100,
            "maximum": 599,
            "description": "Machine-readable status code for this platform organization webhook delivery attempt.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `100` through `599` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `100` through `599` (inclusive) |"
          },
          "errorCode": {
            "type": [
              "string",
              "null"
            ],
            "description": "Machine-readable error code for this platform organization webhook delivery attempt.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "response": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "description": "A redacted excerpt from a failed HTTP response. Successful responses and network errors do not include a response body.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `contentType`, `excerpt`, `truncated` |\n| Alternative 2 | `null` |",
            "properties": {
              "contentType": {
                "type": "string",
                "minLength": 1,
                "maxLength": 128,
                "description": "IANA media type that matches the payload.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |\n| Media type | IANA `type/subtype` value matching the payload, such as `image/jpeg`, `video/mp4`, `audio/ogg`, or `application/pdf` |"
              },
              "excerpt": {
                "type": "string",
                "description": "Redacted response text, limited to 8192 UTF-8 bytes."
              },
              "truncated": {
                "type": "boolean",
                "description": "Whether truncated."
              }
            },
            "required": [
              "contentType",
              "excerpt",
              "truncated"
            ]
          },
          "metadataExpiresAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for metadata expires at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "id",
          "organizationId",
          "projectId",
          "deliveryId",
          "number",
          "status",
          "startedAt",
          "completedAt",
          "nextRetryAt",
          "durationMs",
          "statusCode",
          "errorCode",
          "response",
          "metadataExpiresAt"
        ]
      },
      "platform__ProjectWebhookDeliveryAttempt": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "deliveryId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the delivery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "number": {
            "type": "integer",
            "minimum": 1,
            "description": "Specifies number for this platform project webhook delivery attempt.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "delivering",
              "succeeded",
              "failed"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending` | Pending. |\n| `delivering` | Delivering. |\n| `succeeded` | Succeeded. |\n| `failed` | Failed. |"
          },
          "startedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for started at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "completedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "ISO 8601 timestamp when this operation completed.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "nextRetryAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for next retry at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "durationMs": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "description": "Specifies duration ms for this platform project webhook delivery attempt.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "statusCode": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 100,
            "maximum": 599,
            "description": "Machine-readable status code for this platform project webhook delivery attempt.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `100` through `599` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `100` through `599` (inclusive) |"
          },
          "errorCode": {
            "type": [
              "string",
              "null"
            ],
            "description": "Machine-readable error code for this platform project webhook delivery attempt.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "response": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "description": "A redacted excerpt from a failed HTTP response. Successful responses and network errors do not include a response body.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `contentType`, `excerpt`, `truncated` |\n| Alternative 2 | `null` |",
            "properties": {
              "contentType": {
                "type": "string",
                "minLength": 1,
                "maxLength": 128,
                "description": "IANA media type that matches the payload.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |\n| Media type | IANA `type/subtype` value matching the payload, such as `image/jpeg`, `video/mp4`, `audio/ogg`, or `application/pdf` |"
              },
              "excerpt": {
                "type": "string",
                "description": "Redacted response text, limited to 8192 UTF-8 bytes."
              },
              "truncated": {
                "type": "boolean",
                "description": "Whether truncated."
              }
            },
            "required": [
              "contentType",
              "excerpt",
              "truncated"
            ]
          },
          "metadataExpiresAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for metadata expires at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "id",
          "organizationId",
          "projectId",
          "deliveryId",
          "number",
          "status",
          "startedAt",
          "completedAt",
          "nextRetryAt",
          "durationMs",
          "statusCode",
          "errorCode",
          "response",
          "metadataExpiresAt"
        ]
      },
      "platform__JsonValue": {
        "anyOf": [
          {
            "oneOf": [
              {
                "type": [
                  "string",
                  "null"
                ],
                "enum": [
                  null
                ]
              },
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/platform__JsonValue"
                }
              },
              {
                "type": "object",
                "additionalProperties": {
                  "$ref": "#/components/schemas/platform__JsonValue"
                }
              }
            ]
          },
          {
            "type": "null"
          }
        ]
      },
      "platform__OperationCapabilities": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "cancellable": {
            "type": "boolean",
            "description": "Whether cancellable."
          },
          "watchable": {
            "type": "boolean",
            "description": "Whether watchable."
          }
        },
        "required": [
          "cancellable",
          "watchable"
        ]
      },
      "platform__OperationProgress": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string",
            "description": "Stable machine-readable code for this result."
          },
          "current": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Specifies current for this platform operation progress.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
          },
          "total": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Final total for this order or price summary.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "code",
          "current",
          "total"
        ]
      },
      "platform__OperationError": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string",
            "description": "Stable machine-readable code for this result."
          },
          "retryable": {
            "type": "boolean",
            "description": "Whether retryable."
          },
          "details": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": {
              "$ref": "#/components/schemas/platform__JsonValue"
            },
            "description": "Structured details values for this platform operation error.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "code",
          "retryable",
          "details"
        ]
      },
      "platform__OperationActionRequired": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string",
            "description": "Stable machine-readable code for this result."
          },
          "details": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": {
              "$ref": "#/components/schemas/platform__JsonValue"
            },
            "description": "Structured details values for this platform operation action required.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "code",
          "details"
        ]
      },
      "platform__Operation": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Owning project. `null` for a team-owned operation.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "kind": {
            "type": "string",
            "enum": [
              "auth_projection_repair",
              "session_lifecycle",
              "auth_session_purge",
              "label_projection_purge",
              "billing_reconciliation",
              "auto_top_up",
              "campaign",
              "production_enrollment",
              "retention_sweep",
              "webhook_redrive"
            ],
            "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `auth_projection_repair` | Auth projection repair. |\n| `session_lifecycle` | Session lifecycle. |\n| `auth_session_purge` | Auth session purge. |\n| `label_projection_purge` | Label projection purge. |\n| `billing_reconciliation` | Billing reconciliation. |\n| `auto_top_up` | Auto top up. |\n| `campaign` | Campaign. |\n| `production_enrollment` | Production enrollment. |\n| `retention_sweep` | Retention sweep. |\n| `webhook_redrive` | Webhook redrive. |"
          },
          "resource": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "type": "string",
                "description": "Type discriminator for this object."
              },
              "id": {
                "type": "string",
                "description": "Identifier for this resource."
              }
            },
            "required": [
              "type",
              "id"
            ],
            "description": "Structured resource values for this platform operation."
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "running",
              "action_required",
              "cancelling",
              "succeeded",
              "failed",
              "cancelled"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending` | Pending. |\n| `running` | Running. |\n| `action_required` | Action required. |\n| `cancelling` | Cancelling. |\n| `succeeded` | Succeeded. |\n| `failed` | Failed. |\n| `cancelled` | Cancelled. |"
          },
          "sequence": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "description": "Specifies sequence for this platform operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |\n| Format | `int64` |"
          },
          "capabilities": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__OperationCapabilities"
              }
            ],
            "description": "Specifies capabilities for this platform operation."
          },
          "progress": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__OperationProgress"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies progress for this platform operation.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `code`, `current`, `total` |\n| Alternative 2 | `null` |"
          },
          "result": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__JsonValue"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies result for this platform operation.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Any JSON value matching this alternative |\n| Alternative 2 | `null` |"
          },
          "error": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__OperationError"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Error details returned when the operation fails.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `code`, `retryable`, `details` |\n| Alternative 2 | `null` |"
          },
          "actionRequired": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__OperationActionRequired"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies action required for this platform operation.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `code`, `details` |\n| Alternative 2 | `null` |"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was last updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "completedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "ISO 8601 timestamp when this operation completed.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "id",
          "organizationId",
          "projectId",
          "kind",
          "resource",
          "status",
          "sequence",
          "capabilities",
          "progress",
          "result",
          "error",
          "actionRequired",
          "createdAt",
          "updatedAt",
          "completedAt"
        ]
      },
      "platform__ProjectOperation": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "kind": {
            "type": "string",
            "enum": [
              "auth_projection_repair",
              "session_lifecycle",
              "auth_session_purge",
              "label_projection_purge",
              "billing_reconciliation",
              "auto_top_up",
              "campaign",
              "production_enrollment",
              "retention_sweep",
              "webhook_redrive"
            ],
            "description": "Kind discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `auth_projection_repair` | Auth projection repair. |\n| `session_lifecycle` | Session lifecycle. |\n| `auth_session_purge` | Auth session purge. |\n| `label_projection_purge` | Label projection purge. |\n| `billing_reconciliation` | Billing reconciliation. |\n| `auto_top_up` | Auto top up. |\n| `campaign` | Campaign. |\n| `production_enrollment` | Production enrollment. |\n| `retention_sweep` | Retention sweep. |\n| `webhook_redrive` | Webhook redrive. |"
          },
          "resource": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "type": "string",
                "description": "Type discriminator for this object."
              },
              "id": {
                "type": "string",
                "description": "Identifier for this resource."
              }
            },
            "required": [
              "type",
              "id"
            ],
            "description": "Structured resource values for this platform project operation."
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "running",
              "action_required",
              "cancelling",
              "succeeded",
              "failed",
              "cancelled"
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending` | Pending. |\n| `running` | Running. |\n| `action_required` | Action required. |\n| `cancelling` | Cancelling. |\n| `succeeded` | Succeeded. |\n| `failed` | Failed. |\n| `cancelled` | Cancelled. |"
          },
          "sequence": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "description": "Specifies sequence for this platform project operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |\n| Format | `int64` |"
          },
          "capabilities": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__OperationCapabilities"
              }
            ],
            "description": "Specifies capabilities for this platform project operation."
          },
          "progress": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__OperationProgress"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies progress for this platform project operation.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `code`, `current`, `total` |\n| Alternative 2 | `null` |"
          },
          "result": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__JsonValue"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies result for this platform project operation.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Any JSON value matching this alternative |\n| Alternative 2 | `null` |"
          },
          "error": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__OperationError"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Error details returned when the operation fails.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `code`, `retryable`, `details` |\n| Alternative 2 | `null` |"
          },
          "actionRequired": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__OperationActionRequired"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Specifies action required for this platform project operation.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `code`, `details` |\n| Alternative 2 | `null` |"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was last updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "completedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "ISO 8601 timestamp when this operation completed.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "id",
          "organizationId",
          "projectId",
          "kind",
          "resource",
          "status",
          "sequence",
          "capabilities",
          "progress",
          "result",
          "error",
          "actionRequired",
          "createdAt",
          "updatedAt",
          "completedAt"
        ]
      },
      "platform__OperationTransition": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "operationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "sequence": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "description": "Specifies sequence for this platform operation transition.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |\n| Format | `int64` |"
          },
          "fromStatus": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "pending",
              "running",
              "action_required",
              "cancelling",
              "succeeded",
              "failed",
              "cancelled",
              null
            ],
            "description": "Specifies from status for this platform operation transition.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending` | Pending. |\n| `running` | Running. |\n| `action_required` | Action required. |\n| `cancelling` | Cancelling. |\n| `succeeded` | Succeeded. |\n| `failed` | Failed. |\n| `cancelled` | Cancelled. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `pending` or `running` or `action_required` or `cancelling` or `succeeded` or `failed` or `cancelled` |\n| Alternative 2 | `null` |"
          },
          "toStatus": {
            "type": "string",
            "enum": [
              "pending",
              "running",
              "action_required",
              "cancelling",
              "succeeded",
              "failed",
              "cancelled"
            ],
            "description": "Specifies to status for this platform operation transition.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending` | Pending. |\n| `running` | Running. |\n| `action_required` | Action required. |\n| `cancelling` | Cancelling. |\n| `succeeded` | Succeeded. |\n| `failed` | Failed. |\n| `cancelled` | Cancelled. |"
          },
          "reasonCode": {
            "type": [
              "string",
              "null"
            ],
            "description": "Machine-readable reason code for this platform operation transition.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for occurred at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "snapshot": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "progress": {
                "anyOf": [
                  {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/platform__OperationProgress"
                      }
                    ]
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Specifies progress for this snapshot.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `code`, `current`, `total` |\n| Alternative 2 | `null` |"
              },
              "error": {
                "anyOf": [
                  {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/platform__OperationError"
                      }
                    ]
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Error details returned when the operation fails.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `code`, `retryable`, `details` |\n| Alternative 2 | `null` |"
              },
              "actionRequired": {
                "anyOf": [
                  {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/platform__OperationActionRequired"
                      }
                    ]
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Specifies action required for this snapshot.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `code`, `details` |\n| Alternative 2 | `null` |"
              }
            },
            "required": [
              "progress",
              "error",
              "actionRequired"
            ],
            "description": "Structured snapshot values for this platform operation transition."
          }
        },
        "required": [
          "operationId",
          "sequence",
          "fromStatus",
          "toStatus",
          "reasonCode",
          "occurredAt",
          "snapshot"
        ]
      },
      "platform__IdempotencyReceipt": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "key": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "description": "Specifies key for this platform idempotency receipt.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `255` characters |"
          },
          "replayed": {
            "type": "boolean",
            "description": "Whether replayed."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource expires.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "id",
          "key",
          "replayed",
          "createdAt",
          "expiresAt"
        ]
      },
      "platform__ReplayEventInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "webhookId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the webhook.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        },
        "required": [
          "webhookId"
        ]
      },
      "platform__TestOrganizationWebhookInput": {
        "type": "object",
        "additionalProperties": false,
        "description": "A team webhook test accepts an optional event type. Supplied event bodies and session IDs are rejected with HTTP 400.",
        "properties": {
          "eventType": {
            "type": "string",
            "default": "polymorfa.test",
            "pattern": "^[a-z0-9][a-z0-9_.-]{0,127}$",
            "description": "Category assigned to event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z0-9][a-z0-9_.-]{0,127}$` |"
          }
        }
      },
      "platform__TestProjectWebhookInput": {
        "description": "Names reserved for internal use are rejected with HTTP 400, whether supplied as eventType or in the native event body, before a test event or delivery is created.",
        "oneOf": [
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "eventType": {
                "type": "string",
                "default": "polymorfa.test",
                "pattern": "^[a-z0-9][a-z0-9_.-]{0,127}$",
                "description": "Category assigned to event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z0-9][a-z0-9_.-]{0,127}$` |"
              }
            }
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "eventType": {
                "type": "string",
                "pattern": "^[a-z0-9][a-z0-9_.-]{0,127}$",
                "description": "Category assigned to event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z0-9][a-z0-9_.-]{0,127}$` |"
              },
              "body": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/platform__EncodedEventPayload"
                  }
                ],
                "description": "Primary text content shown to the recipient."
              },
              "sessionId": {
                "type": "string",
                "format": "uuid",
                "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
              }
            },
            "required": [
              "body",
              "sessionId"
            ]
          }
        ]
      },
      "platform__OrganizationEventReplayReceipt": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "operationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "idempotency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__IdempotencyReceipt"
              }
            ],
            "description": "Specifies idempotency for this platform organization event replay receipt."
          },
          "eventId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "deliveryId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the delivery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        },
        "required": [
          "eventId",
          "deliveryId",
          "operationId",
          "idempotency"
        ]
      },
      "platform__ProjectEventReplayReceipt": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "operationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "idempotency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__IdempotencyReceipt"
              }
            ],
            "description": "Specifies idempotency for this platform project event replay receipt."
          },
          "eventId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "deliveryId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the delivery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        },
        "required": [
          "eventId",
          "deliveryId",
          "operationId",
          "idempotency"
        ]
      },
      "platform__OrganizationWebhookDeliveryRetryReceipt": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "operationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "idempotency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__IdempotencyReceipt"
              }
            ],
            "description": "Specifies idempotency for this platform organization webhook delivery retry receipt."
          },
          "deliveryId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the delivery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "attemptId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the attempt.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        },
        "required": [
          "deliveryId",
          "attemptId",
          "operationId",
          "idempotency"
        ]
      },
      "platform__ProjectWebhookDeliveryRetryReceipt": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "operationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "idempotency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__IdempotencyReceipt"
              }
            ],
            "description": "Specifies idempotency for this platform project webhook delivery retry receipt."
          },
          "deliveryId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the delivery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "attemptId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the attempt.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        },
        "required": [
          "deliveryId",
          "attemptId",
          "operationId",
          "idempotency"
        ]
      },
      "platform__OrganizationWebhookTestReceipt": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "operationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "idempotency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__IdempotencyReceipt"
              }
            ],
            "description": "Specifies idempotency for this platform organization webhook test receipt."
          },
          "eventId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "deliveryId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the delivery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        },
        "required": [
          "eventId",
          "deliveryId",
          "operationId",
          "idempotency"
        ]
      },
      "platform__ProjectWebhookTestReceipt": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "operationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "idempotency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__IdempotencyReceipt"
              }
            ],
            "description": "Specifies idempotency for this platform project webhook test receipt."
          },
          "eventId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "deliveryId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the delivery.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        },
        "required": [
          "eventId",
          "deliveryId",
          "operationId",
          "idempotency"
        ]
      },
      "platform__OperationCancellationReceipt": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__Operation"
              }
            ],
            "description": "Specifies operation for this platform operation cancellation receipt."
          },
          "operationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "idempotency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__IdempotencyReceipt"
              }
            ],
            "description": "Specifies idempotency for this platform operation cancellation receipt."
          }
        },
        "required": [
          "operation",
          "operationId",
          "idempotency"
        ]
      },
      "platform__ProjectOperationCancellationReceipt": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__ProjectOperation"
              }
            ],
            "description": "Specifies operation for this platform project operation cancellation receipt."
          },
          "operationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier used to retrieve the asynchronous operation.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "idempotency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__IdempotencyReceipt"
              }
            ],
            "description": "Specifies idempotency for this platform project operation cancellation receipt."
          }
        },
        "required": [
          "operation",
          "operationId",
          "idempotency"
        ]
      },
      "platform__OperationConflictEnvelope": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "error": {
            "type": "string",
            "enum": [
              "operation_conflict"
            ],
            "description": "Error details returned when the operation fails.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `operation_conflict` | Operation conflict. |"
          },
          "code": {
            "type": "string",
            "enum": [
              "operation_conflict"
            ],
            "description": "Stable machine-readable code for this result.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `operation_conflict` | Operation conflict. |"
          },
          "operation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__Operation"
              }
            ],
            "description": "Specifies operation for this platform operation conflict envelope."
          }
        },
        "required": [
          "error",
          "code",
          "operation"
        ]
      },
      "platform__IdempotencyConflictEnvelope": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "error": {
            "type": "string",
            "enum": [
              "idempotency_conflict"
            ],
            "description": "Error details returned when the operation fails.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `idempotency_conflict` | Idempotency conflict. |"
          },
          "code": {
            "type": "string",
            "enum": [
              "idempotency_conflict"
            ],
            "description": "Stable machine-readable code for this result.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `idempotency_conflict` | Idempotency conflict. |"
          }
        },
        "required": [
          "error",
          "code"
        ]
      },
      "platform__OperationCancellationConflictEnvelope": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/platform__OperationConflictEnvelope"
          },
          {
            "$ref": "#/components/schemas/platform__IdempotencyConflictEnvelope"
          }
        ]
      },
      "platform__PlatformAccessSuccessResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether the request succeeded."
          },
          "message": {
            "type": "string",
            "description": "Human-readable message associated with this result."
          }
        },
        "required": [
          "success"
        ]
      },
      "platform__PlatformAccessEventStreamReadyFrame": {
        "type": "object",
        "properties": {
          "v": {
            "type": "number",
            "enum": [
              1
            ],
            "description": "Specifies v for this platform platform access event stream ready frame.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `1` | 1. |"
          },
          "streamId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the stream.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "sequence": {
            "type": "integer",
            "minimum": 1,
            "description": "Frame counter for this connection. It restarts at 1 on every connection.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
          },
          "sentAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for sent at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "type": {
            "type": "string",
            "enum": [
              "ready"
            ],
            "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `ready` | Ready. |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "connectionExpiresAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for connection expires at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "heartbeatIntervalMs": {
            "type": "integer",
            "description": "Specifies heartbeat interval ms for this platform platform access event stream ready frame."
          },
          "maxInFlight": {
            "type": "integer",
            "description": "Specifies max in flight for this platform platform access event stream ready frame."
          },
          "ack": {
            "type": "string",
            "enum": [
              "auto",
              "manual"
            ],
            "description": "Specifies ack for this platform platform access event stream ready frame.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `auto` | Auto. |\n| `manual` | Manual. |"
          },
          "types": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Types associated with this platform platform access event stream ready frame."
          },
          "idleTimeoutMs": {
            "type": "integer",
            "description": "Specifies idle timeout ms for this platform platform access event stream ready frame."
          },
          "resume": {
            "type": "object",
            "properties": {
              "startPosition": {
                "type": "string",
                "enum": [
                  "now",
                  "resume"
                ],
                "description": "Specifies start position for this resume.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `now` | Now. |\n| `resume` | Resume. |"
              },
              "acceptedCursor": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Specifies accepted cursor for this resume.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
              },
              "oldestAvailableCursor": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Specifies oldest available cursor for this resume.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
              },
              "cursorExpiresAt": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date-time",
                "description": "Timestamp for cursor expires at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
              }
            },
            "required": [
              "startPosition",
              "acceptedCursor",
              "oldestAvailableCursor",
              "cursorExpiresAt"
            ],
            "additionalProperties": false,
            "description": "Structured resume values for this platform platform access event stream ready frame."
          }
        },
        "required": [
          "v",
          "streamId",
          "sequence",
          "sentAt",
          "type",
          "projectId",
          "connectionExpiresAt",
          "heartbeatIntervalMs",
          "maxInFlight",
          "ack",
          "types",
          "idleTimeoutMs",
          "resume"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessStreamedEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "organizationId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the organization.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "type": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          },
          "source": {
            "type": "string",
            "enum": [
              "runtime",
              "platform",
              "test"
            ],
            "description": "Specifies source for this platform platform access streamed event.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `runtime` | Runtime. |\n| `platform` | Platform. |\n| `test` | Test. |"
          },
          "environment": {
            "type": "string",
            "enum": [
              "development",
              "production"
            ],
            "description": "Specifies environment for this platform platform access streamed event.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `development` | Development. |\n| `production` | Production. |"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "payloadAvailability": {
            "type": "string",
            "enum": [
              "available",
              "not_retained",
              "unavailable"
            ],
            "description": "`available` when `payload` is present. `not_retained` when hosted message storage did not keep the body. `unavailable` when the body is too large or its storage authority has ended.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `available` | Available. |\n| `not_retained` | Not retained. |\n| `unavailable` | Unavailable. |"
          },
          "payload": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "encoding": {
                "type": "string",
                "enum": [
                  "base64"
                ],
                "description": "Specifies encoding for this payload.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `base64` | Base64. |"
              },
              "contentType": {
                "type": "string",
                "enum": [
                  "application/json"
                ],
                "description": "IANA media type that matches the payload.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `application/json` | Application/json. |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Media type | IANA `type/subtype` value matching the payload, such as `image/jpeg`, `video/mp4`, `audio/ogg`, or `application/pdf` |"
              },
              "data": {
                "type": "string",
                "format": "byte",
                "description": "Base64 of the exact webhook body for this event.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `byte` |"
              }
            },
            "required": [
              "encoding",
              "contentType",
              "data"
            ],
            "additionalProperties": false,
            "description": "Structured payload carried by this event or operation.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `encoding`: `base64`; Field `contentType`: `application/json`; Required fields: `encoding`, `contentType`, `data` |\n| Alternative 2 | `null` |"
          },
          "replayableUntil": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Specifies replayable until for this platform platform access streamed event.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "metadataExpiresAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for metadata expires at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "id",
          "organizationId",
          "projectId",
          "type",
          "source",
          "environment",
          "createdAt",
          "payloadAvailability",
          "payload",
          "replayableUntil",
          "metadataExpiresAt"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessEventStreamEventFrame": {
        "type": "object",
        "properties": {
          "v": {
            "type": "number",
            "enum": [
              1
            ],
            "description": "Specifies v for this platform platform access event stream event frame.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `1` | 1. |"
          },
          "streamId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the stream.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "sequence": {
            "type": "integer",
            "minimum": 1,
            "description": "Frame counter for this connection. It restarts at 1 on every connection.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
          },
          "sentAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for sent at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "type": {
            "type": "string",
            "enum": [
              "event"
            ],
            "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `event` | Event. |"
          },
          "cursor": {
            "type": "string",
            "description": "Resume position after this event. Also sent as the SSE `id`."
          },
          "event": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessStreamedEvent"
              }
            ],
            "description": "Specifies event for this platform platform access event stream event frame."
          }
        },
        "required": [
          "v",
          "streamId",
          "sequence",
          "sentAt",
          "type",
          "cursor",
          "event"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessEventStreamHeartbeatFrame": {
        "type": "object",
        "properties": {
          "v": {
            "type": "number",
            "enum": [
              1
            ],
            "description": "Specifies v for this platform platform access event stream heartbeat frame.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `1` | 1. |"
          },
          "streamId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the stream.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "sequence": {
            "type": "integer",
            "minimum": 1,
            "description": "Frame counter for this connection. It restarts at 1 on every connection.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
          },
          "sentAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for sent at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "type": {
            "type": "string",
            "enum": [
              "heartbeat"
            ],
            "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `heartbeat` | Heartbeat. |"
          },
          "serverTime": {
            "type": "string",
            "format": "date-time",
            "description": "Specifies server time for this platform platform access event stream heartbeat frame.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "lastCursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies last cursor for this platform platform access event stream heartbeat frame.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "v",
          "streamId",
          "sequence",
          "sentAt",
          "type",
          "serverTime",
          "lastCursor"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessEventStreamCheckpointFrame": {
        "type": "object",
        "properties": {
          "v": {
            "type": "number",
            "enum": [
              1
            ],
            "description": "Specifies v for this platform platform access event stream checkpoint frame.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `1` | 1. |"
          },
          "streamId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the stream.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "sequence": {
            "type": "integer",
            "minimum": 1,
            "description": "Frame counter for this connection. It restarts at 1 on every connection.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
          },
          "sentAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for sent at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "type": {
            "type": "string",
            "enum": [
              "checkpoint"
            ],
            "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `checkpoint` | Checkpoint. |"
          },
          "cursor": {
            "type": "string",
            "description": "Specifies cursor for this platform platform access event stream checkpoint frame."
          },
          "cursorExpiresAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for cursor expires at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "v",
          "streamId",
          "sequence",
          "sentAt",
          "type",
          "cursor",
          "cursorExpiresAt"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessEventStreamBackpressureFrame": {
        "type": "object",
        "properties": {
          "v": {
            "type": "number",
            "enum": [
              1
            ],
            "description": "Specifies v for this platform platform access event stream backpressure frame.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `1` | 1. |"
          },
          "streamId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the stream.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "sequence": {
            "type": "integer",
            "minimum": 1,
            "description": "Frame counter for this connection. It restarts at 1 on every connection.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
          },
          "sentAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for sent at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "type": {
            "type": "string",
            "enum": [
              "backpressure"
            ],
            "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `backpressure` | Backpressure. |"
          },
          "inFlight": {
            "type": "integer",
            "description": "Specifies in flight for this platform platform access event stream backpressure frame."
          },
          "limit": {
            "type": "integer",
            "description": "Specifies limit for this platform platform access event stream backpressure frame."
          },
          "graceMs": {
            "type": "integer",
            "description": "Specifies grace ms for this platform platform access event stream backpressure frame."
          }
        },
        "required": [
          "v",
          "streamId",
          "sequence",
          "sentAt",
          "type",
          "inFlight",
          "limit",
          "graceMs"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessEventStreamGapFrame": {
        "type": "object",
        "properties": {
          "v": {
            "type": "number",
            "enum": [
              1
            ],
            "description": "Specifies v for this platform platform access event stream gap frame.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `1` | 1. |"
          },
          "streamId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the stream.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "sequence": {
            "type": "integer",
            "minimum": 1,
            "description": "Frame counter for this connection. It restarts at 1 on every connection.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
          },
          "sentAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for sent at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "type": {
            "type": "string",
            "enum": [
              "gap"
            ],
            "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `gap` | Gap. |"
          },
          "requestedCursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies requested cursor for this platform platform access event stream gap frame.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "oldestAvailableCursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies oldest available cursor for this platform platform access event stream gap frame.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "cursorExpiresAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for cursor expires at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "recoverable": {
            "type": "boolean",
            "description": "True when reconnecting from `requestedCursor` can deliver the events. False when events were removed by retention."
          },
          "reason": {
            "type": "string",
            "enum": [
              "source_unavailable",
              "state_unavailable",
              "stream_unavailable",
              "retention_exceeded"
            ],
            "description": "Reason for the reported state or outcome.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `source_unavailable` | Source unavailable. |\n| `state_unavailable` | State unavailable. |\n| `stream_unavailable` | Stream unavailable. |\n| `retention_exceeded` | Retention exceeded. |"
          },
          "missedEvents": {
            "type": "integer",
            "description": "Specifies missed events for this platform platform access event stream gap frame."
          }
        },
        "required": [
          "v",
          "streamId",
          "sequence",
          "sentAt",
          "type",
          "requestedCursor",
          "oldestAvailableCursor",
          "cursorExpiresAt",
          "recoverable",
          "reason"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessEventStreamDroppedFrame": {
        "type": "object",
        "properties": {
          "v": {
            "type": "number",
            "enum": [
              1
            ],
            "description": "Specifies v for this platform platform access event stream dropped frame.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `1` | 1. |"
          },
          "streamId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the stream.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "sequence": {
            "type": "integer",
            "minimum": 1,
            "description": "Frame counter for this connection. It restarts at 1 on every connection.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
          },
          "sentAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for sent at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "type": {
            "type": "string",
            "enum": [
              "dropped"
            ],
            "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `dropped` | Dropped. |"
          },
          "count": {
            "type": "integer",
            "description": "Number of matching resources."
          },
          "fromCursor": {
            "type": "string",
            "description": "Specifies from cursor for this platform platform access event stream dropped frame."
          },
          "toCursor": {
            "type": "string",
            "description": "Specifies to cursor for this platform platform access event stream dropped frame."
          },
          "recoverable": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether recoverable.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "reason": {
            "type": "string",
            "enum": [
              "ack_timeout"
            ],
            "description": "Reason for the reported state or outcome.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `ack_timeout` | Ack timeout. |"
          }
        },
        "required": [
          "v",
          "streamId",
          "sequence",
          "sentAt",
          "type",
          "count",
          "fromCursor",
          "toCursor",
          "recoverable",
          "reason"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessEventStreamExpiryFrame": {
        "type": "object",
        "properties": {
          "v": {
            "type": "number",
            "enum": [
              1
            ],
            "description": "Specifies v for this platform platform access event stream expiry frame.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `1` | 1. |"
          },
          "streamId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the stream.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "sequence": {
            "type": "integer",
            "minimum": 1,
            "description": "Frame counter for this connection. It restarts at 1 on every connection.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
          },
          "sentAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for sent at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "type": {
            "type": "string",
            "enum": [
              "expiry"
            ],
            "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `expiry` | Expiry. |"
          },
          "expiredAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for expired at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "lastCursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies last cursor for this platform platform access event stream expiry frame.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "reason": {
            "type": "string",
            "enum": [
              "connection_expired",
              "idle_timeout"
            ],
            "description": "Reason for the reported state or outcome.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `connection_expired` | Connection expired. |\n| `idle_timeout` | Idle timeout. |"
          }
        },
        "required": [
          "v",
          "streamId",
          "sequence",
          "sentAt",
          "type",
          "expiredAt",
          "lastCursor",
          "reason"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessEventStreamRevokedFrame": {
        "type": "object",
        "properties": {
          "v": {
            "type": "number",
            "enum": [
              1
            ],
            "description": "Specifies v for this platform platform access event stream revoked frame.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `1` | 1. |"
          },
          "streamId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for the stream.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "sequence": {
            "type": "integer",
            "minimum": 1,
            "description": "Frame counter for this connection. It restarts at 1 on every connection.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
          },
          "sentAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for sent at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "type": {
            "type": "string",
            "enum": [
              "revoked"
            ],
            "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `revoked` | Revoked. |"
          },
          "lastCursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies last cursor for this platform platform access event stream revoked frame.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "reason": {
            "type": "string",
            "enum": [
              "principal_revoked"
            ],
            "description": "Reason for the reported state or outcome.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `principal_revoked` | Principal revoked. |"
          }
        },
        "required": [
          "v",
          "streamId",
          "sequence",
          "sentAt",
          "type",
          "lastCursor",
          "reason"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessEventStreamFrame": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/platform__PlatformAccessEventStreamReadyFrame"
          },
          {
            "$ref": "#/components/schemas/platform__PlatformAccessEventStreamEventFrame"
          },
          {
            "$ref": "#/components/schemas/platform__PlatformAccessEventStreamHeartbeatFrame"
          },
          {
            "$ref": "#/components/schemas/platform__PlatformAccessEventStreamCheckpointFrame"
          },
          {
            "$ref": "#/components/schemas/platform__PlatformAccessEventStreamBackpressureFrame"
          },
          {
            "$ref": "#/components/schemas/platform__PlatformAccessEventStreamGapFrame"
          },
          {
            "$ref": "#/components/schemas/platform__PlatformAccessEventStreamDroppedFrame"
          },
          {
            "$ref": "#/components/schemas/platform__PlatformAccessEventStreamExpiryFrame"
          },
          {
            "$ref": "#/components/schemas/platform__PlatformAccessEventStreamRevokedFrame"
          }
        ],
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "ready": "#/components/schemas/platform__PlatformAccessEventStreamReadyFrame",
            "event": "#/components/schemas/platform__PlatformAccessEventStreamEventFrame",
            "heartbeat": "#/components/schemas/platform__PlatformAccessEventStreamHeartbeatFrame",
            "checkpoint": "#/components/schemas/platform__PlatformAccessEventStreamCheckpointFrame",
            "backpressure": "#/components/schemas/platform__PlatformAccessEventStreamBackpressureFrame",
            "gap": "#/components/schemas/platform__PlatformAccessEventStreamGapFrame",
            "dropped": "#/components/schemas/platform__PlatformAccessEventStreamDroppedFrame",
            "expiry": "#/components/schemas/platform__PlatformAccessEventStreamExpiryFrame",
            "revoked": "#/components/schemas/platform__PlatformAccessEventStreamRevokedFrame"
          }
        },
        "description": "JSON carried in the `data` field of one SSE message. The SSE `event` field repeats `type`."
      },
      "platform__PlatformAccessEventStreamAckResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "streamId": {
                "type": "string",
                "format": "uuid",
                "description": "Identifier for the stream.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
              },
              "acknowledgedCursor": {
                "type": "string",
                "description": "Specifies acknowledged cursor for this data."
              },
              "sequence": {
                "type": "integer",
                "description": "Specifies sequence for this data."
              },
              "replayed": {
                "type": "boolean",
                "description": "Whether replayed."
              }
            },
            "required": [
              "streamId",
              "acknowledgedCursor",
              "sequence",
              "replayed"
            ],
            "additionalProperties": false,
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessEventStreamAckRequest": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4096,
            "description": "Specifies cursor for this platform platform access event stream ack request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `4096` characters |"
          },
          "sequence": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991,
            "description": "Specifies sequence for this platform platform access event stream ack request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `9007199254740991` (inclusive) |"
          }
        },
        "required": [
          "cursor",
          "sequence"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessClientToken": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "Client token with pmfa_ct_ prefix"
          },
          "expiresAt": {
            "type": "string",
            "description": "ISO 8601 timestamp when this resource expires."
          }
        },
        "required": [
          "token",
          "expiresAt"
        ]
      },
      "platform__PlatformAccessMintClientTokenResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessClientToken"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessMintClientTokenRequest": {
        "type": "object",
        "properties": {
          "session": {
            "type": "string",
            "minLength": 1,
            "description": "ID of the session this token can access. Provide exactly one of `session` or `customer`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          },
          "customer": {
            "type": "string",
            "format": "uuid",
            "description": "Polymorfa Customer ID. The token covers the numbers this Customer owns when it is minted, and only while the Customer still owns each one. Provide exactly one of `session` or `customer`. Requires the `customers:read` scope and enrollment in the Customer-scoped client tokens beta.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "allow": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "mcp",
                "send_message",
                "send_reaction",
                "send_typing",
                "send_seen",
                "read_presence",
                "subscribe_presence",
                "read_contact",
                "voip_place",
                "voip_answer",
                "voip_signal",
                "chats_read",
                "chats_manage",
                "contact_write",
                "contact_delete"
              ]
            },
            "minItems": 0,
            "maxItems": 15,
            "description": "Immutable action ceiling, intersected with live client rules. Session allow requires the action-ceilings beta. With ceiling issuance enabled, session omission snapshots its configured actions. For a Customer, omission uses the original Customer action set. An empty session allow grants no actions; Customer allow must be non-empty. Regional actions are reserved for enrolled beta access.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `mcp` | Mcp. |\n| `send_message` | Send message. |\n| `send_reaction` | Send reaction. |\n| `send_typing` | Send typing. |\n| `send_seen` | Send seen. |\n| `read_presence` | Read presence. |\n| `subscribe_presence` | Subscribe presence. |\n| `read_contact` | Read contact. |\n| `voip_place` | Voip place. |\n| `voip_answer` | Voip answer. |\n| `voip_signal` | Voip signal. |\n| `chats_read` | Chats read. |\n| `chats_manage` | Chats manage. |\n| `contact_write` | Contact write. |\n| `contact_delete` | Contact delete. |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `0` through `15` items |"
          },
          "ephemeralId": {
            "type": "string",
            "minLength": 1,
            "description": "Your identifier for the browser or mobile user receiving this token.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          },
          "ttlSeconds": {
            "type": "integer",
            "description": "Token lifetime in seconds. Must be at least 1 and within the maximum allowed lifetime. Omit to use that maximum."
          }
        },
        "required": [
          "ephemeralId"
        ]
      },
      "platform__PlatformAccessClientRules": {
        "type": "object",
        "properties": {
          "recipientMode": {
            "type": "string",
            "enum": [
              "conversation",
              "any",
              "none",
              "verified"
            ],
            "description": "Who client tokens may send to: `conversation`, `any`, or `none`. Rules saved before `verified` was retired may still return `verified`.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `conversation` | Conversation. |\n| `any` | Any. |\n| `none` | None. |\n| `verified` | Verified. |"
          },
          "allowedActions": {
            "type": "string",
            "description": "Comma-separated actions client tokens may perform."
          },
          "rateLimit": {
            "type": "integer",
            "minimum": 0,
            "description": "Requests per minute per ephemeral ID. 0 means no per-minute limit.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "maxDaily": {
            "type": "integer",
            "minimum": 0,
            "description": "Messages per day per ephemeral ID. 0 means no daily limit.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "allowedOrigins": {
            "type": "string",
            "description": "Comma-separated browser origins allowed to use client tokens."
          },
          "maxConcurrency": {
            "type": "integer",
            "minimum": 0,
            "description": "Maximum simultaneous calls per ephemeral ID. 0 means no limit.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "allowedNumber": {
            "type": "string",
            "description": "Comma-separated E.164 numbers client tokens may call. Empty allows any number."
          },
          "maxSetupsPerMinute": {
            "type": "integer",
            "minimum": 0,
            "maximum": 600,
            "description": "Call setups per minute per ephemeral ID. 0 applies the default of 10.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `600` (inclusive) |"
          },
          "conversationTtlSeconds": {
            "type": "integer",
            "minimum": 300,
            "maximum": 604800,
            "description": "How long, in seconds, a sender remains replyable in `conversation` mode after their latest inbound message.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `300` through `604800` (inclusive) |"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether client tokens are accepted for this session."
          }
        },
        "required": [
          "recipientMode",
          "allowedActions",
          "rateLimit",
          "maxDaily",
          "allowedOrigins",
          "maxConcurrency",
          "allowedNumber",
          "maxSetupsPerMinute",
          "conversationTtlSeconds",
          "enabled"
        ]
      },
      "platform__PlatformAccessGetClientRulesResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessClientRules"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessSetClientRulesRequest": {
        "type": "object",
        "properties": {
          "recipientMode": {
            "type": "string",
            "description": "Behavior selected for recipient."
          },
          "allowedActions": {
            "type": "string",
            "maxLength": 1024,
            "default": "",
            "description": "Specifies allowed actions for this platform platform access set client rules request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `1024` characters |"
          },
          "rateLimit": {
            "type": "integer",
            "minimum": 0,
            "default": 0,
            "description": "Specifies rate limit for this platform platform access set client rules request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "maxDaily": {
            "type": "integer",
            "minimum": 0,
            "default": 0,
            "description": "Specifies max daily for this platform platform access set client rules request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "allowedOrigins": {
            "type": "string",
            "maxLength": 8192,
            "default": "",
            "description": "Specifies allowed origins for this platform platform access set client rules request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `8192` characters |"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          },
          "maxConcurrency": {
            "type": "integer",
            "minimum": 0,
            "default": 0,
            "description": "Specifies max concurrency for this platform platform access set client rules request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "allowedNumber": {
            "type": "string",
            "maxLength": 8192,
            "default": "",
            "description": "Specifies allowed number for this platform platform access set client rules request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `8192` characters |"
          },
          "maxSetupsPerMinute": {
            "type": "integer",
            "minimum": 0,
            "maximum": 600,
            "default": 0,
            "description": "Specifies max setups per minute for this platform platform access set client rules request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` through `600` (inclusive) |"
          },
          "conversationTtlSeconds": {
            "type": "integer",
            "minimum": 300,
            "maximum": 604800,
            "default": 86400,
            "description": "How long, in seconds, a sender remains replyable in `conversation` mode after their latest inbound message. Must be between 300 (5 minutes) and 604800 (7 days). Defaults to 86400 (24 hours).\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `300` through `604800` (inclusive) |"
          }
        },
        "required": [
          "recipientMode",
          "enabled"
        ]
      },
      "platform__PlatformAccessCallInboundRoute": {
        "type": "string",
        "enum": [
          "clients",
          "sip_trunk"
        ],
        "description": "Where incoming WhatsApp calls ring. `clients` rings your connected clients only. `sip_trunk` also sends each incoming call to the SIP trunk named by `sipTrunkId`. Defaults to `clients`."
      },
      "platform__PlatformAccessCallSettings": {
        "type": "object",
        "properties": {
          "callsEnabled": {
            "type": "boolean",
            "description": "Whether the session can place, answer and receive calls. When false, placing, answering, joining and attaching media fail with `403 calls_disabled`, incoming calls are declined, and SIP trunks cannot place calls through the session. Calls in progress continue, and the participant that answered or placed one can reconnect to it. Defaults to true."
          },
          "conferenceMode": {
            "type": "boolean",
            "description": "Conference mode. When true, every participant you connect to a call (including SIP trunk callers) hears the WhatsApp party and every other participant you connected. When false, each of them hears only the WhatsApp party. The WhatsApp party always hears all of your participants, and no participant hears their own audio. Defaults to true."
          },
          "inboundRoute": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessCallInboundRoute"
              }
            ],
            "description": "Specifies inbound route for this platform platform access call setting.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `clients` | Clients. |\n| `sip_trunk` | Sip trunk. |"
          },
          "sipTrunkId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "The SIP trunk that receives incoming calls when `inboundRoute` is `sip_trunk`; otherwise null.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "sipClaim": {
            "type": "boolean",
            "description": "Whether an answer from the SIP trunk claims the call, which ends ringing on your other clients. Defaults to true."
          },
          "hostCloudApiCalls": {
            "type": "boolean",
            "description": "Whether Polymorfa Calls answers the session's incoming calls when the session uses the Cloud API. When false (the default), your app answers them through the Graph API `/calls` endpoint and Polymorfa Calls does not host them. Sessions on a linked device ignore it."
          },
          "revision": {
            "type": "integer",
            "minimum": 0,
            "description": "Increases on every change; 0 while the session uses the defaults. Send it as `expectedRevision` to refuse an update that would overwrite someone else's change.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "updatedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "When the settings were last changed, or null when the session uses the defaults.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "callsEnabled",
          "conferenceMode",
          "inboundRoute",
          "sipTrunkId",
          "sipClaim",
          "hostCloudApiCalls",
          "revision",
          "updatedAt"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessGetCallSettingsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessCallSettings"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessUpdateCallSettingsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessCallSettings"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessUpdateCallSettingsRequest": {
        "type": "object",
        "properties": {
          "callsEnabled": {
            "type": "boolean",
            "description": "Set to false to refuse new and incoming calls on the session; true allows them again."
          },
          "conferenceMode": {
            "type": "boolean",
            "description": "Set to true so that the participants you connect to a call hear each other as well as the WhatsApp party, or false so that each hears only the WhatsApp party."
          },
          "inboundRoute": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessCallInboundRoute"
              },
              {
                "description": "Where incoming WhatsApp calls ring."
              }
            ],
            "description": "Specifies inbound route for this platform platform access update call settings request.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `clients` | Clients. |\n| `sip_trunk` | Sip trunk. |"
          },
          "sipTrunkId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "The SIP trunk for `sip_trunk`: a trunk in the session's project whose direction is `outbound` or `both`. Required when switching the route to `sip_trunk`; omit it to keep the stored trunk. With `clients` send `null` or omit it: a trunk ID is refused, and `clients` clears the stored trunk.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "sipClaim": {
            "type": "boolean",
            "description": "Whether an answer from the SIP trunk claims the call."
          },
          "hostCloudApiCalls": {
            "type": "boolean",
            "description": "Set to true to have Polymorfa Calls answer the session's Cloud API calls instead of your Graph API integration. Applies to calls that arrive after the change."
          },
          "expectedRevision": {
            "type": "integer",
            "minimum": 0,
            "description": "Apply the update only if the settings still have this `revision` (0 for a session using the defaults). Otherwise the update fails with `409 state_conflict`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "additionalProperties": false
      },
      "platform__PlatformAccessCallRetentionPolicy": {
        "type": "string",
        "enum": [
          "short",
          "standard",
          "extended",
          "compliance",
          "custom"
        ],
        "description": "The retention policy: `short` (7 days), `standard` (30 days), `extended` (90 days), `compliance` (365 days), or `custom` (the number of days in `retentionDays`). Defaults to `extended`."
      },
      "platform__PlatformAccessCallRetention": {
        "type": "object",
        "properties": {
          "policy": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessCallRetentionPolicy"
              }
            ],
            "description": "Specifies policy for this platform platform access call retention.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `short` | Short. |\n| `standard` | Standard. |\n| `extended` | Extended. |\n| `compliance` | Compliance. |\n| `custom` | Custom. |"
          },
          "retentionDays": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2555,
            "description": "How many days Polymorfa keeps your team's call data. Deletion of call data older than this starts on a date Polymorfa announces in the changelog; until then, the setting records your choice and nothing is deleted. Defaults to 90.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `2555` (inclusive) |"
          },
          "appliesTo": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The call data the period applies to: `call_records` (call history), `call_events` (the participant and connection history of each call) and `client_reports` (the diagnostics your apps report for their call connections). New kinds of call data are added to this list and follow the same period."
          },
          "revision": {
            "type": "integer",
            "minimum": 0,
            "description": "Increases on every change; 0 while your team uses the default. Send it as `expectedRevision` to refuse an update that would overwrite someone else's change.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "updatedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "When the setting was last changed, or null while your team uses the default.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "policy",
          "retentionDays",
          "appliesTo",
          "revision",
          "updatedAt"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessGetCallRetentionResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessCallRetention"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessUpdateCallRetentionResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessCallRetention"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessUpdateCallRetentionRequest": {
        "type": "object",
        "properties": {
          "policy": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessCallRetentionPolicy"
              },
              {
                "description": "The retention policy. A named policy sets its own period; `custom` uses `retentionDays`."
              }
            ],
            "description": "Specifies policy for this platform platform access update call retention request.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `short` | Short. |\n| `standard` | Standard. |\n| `extended` | Extended. |\n| `compliance` | Compliance. |\n| `custom` | Custom. |"
          },
          "retentionDays": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2555,
            "description": "Required when `policy` is `custom`: a whole number of days from 1 to 2555. With a named policy, omit it or send that policy's period.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `2555` (inclusive) |"
          },
          "expectedRevision": {
            "type": "integer",
            "minimum": 0,
            "description": "Apply the update only if the setting still has this `revision` (0 for a team using the default). Otherwise the update fails with `409 state_conflict`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "policy"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessSipTransport": {
        "type": "string",
        "enum": [
          "udp",
          "tcp",
          "tls"
        ],
        "description": "Transport your PBX uses for SIP signaling."
      },
      "platform__PlatformAccessSipEndpointTransport": {
        "type": "object",
        "properties": {
          "transport": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSipTransport"
              }
            ],
            "description": "Specifies transport for this platform platform access sip endpoint transport.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `udp` | Udp. |\n| `tcp` | Tcp. |\n| `tls` | Tls. |"
          },
          "port": {
            "type": "integer",
            "description": "Port on `host` for this transport."
          },
          "srtp": {
            "type": "string",
            "enum": [
              "required",
              "not_supported"
            ],
            "description": "`required`: calls on this transport must use SRTP (SDES) media. `not_supported`: calls use plain RTP; offers with SRTP are refused.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `required` | Required. |\n| `not_supported` | Not supported. |"
          }
        },
        "required": [
          "transport",
          "port",
          "srtp"
        ]
      },
      "platform__PlatformAccessSipEndpointRtp": {
        "type": "object",
        "properties": {
          "protocol": {
            "type": "string",
            "enum": [
              "udp"
            ],
            "description": "Specifies protocol for this platform platform access sip endpoint rtp.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `udp` | Udp. |"
          },
          "portMin": {
            "type": "integer",
            "description": "First port of the range."
          },
          "portMax": {
            "type": "integer",
            "description": "Last port of the range, inclusive."
          }
        },
        "required": [
          "protocol",
          "portMin",
          "portMax"
        ],
        "description": "UDP port range that call audio (RTP or SRTP) uses on Polymorfa's side. Allow it in both directions."
      },
      "platform__PlatformAccessSipEndpointHosted": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "hosted"
            ],
            "description": "This environment accepts SIP at `host`.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `hosted` | Hosted. |"
          },
          "host": {
            "type": "string",
            "minLength": 1,
            "description": "Host name your PBX sends SIP to. Allow the addresses it resolves to for both SIP and RTP.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At least `1` characters |"
          },
          "transports": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/platform__PlatformAccessSipEndpointTransport"
            },
            "minItems": 1,
            "description": "SIP transports and their ports on `host`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At least `1` items |"
          },
          "rtp": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSipEndpointRtp"
              }
            ],
            "description": "Specifies rtp for this platform platform access sip endpoint hosted."
          }
        },
        "required": [
          "status",
          "host",
          "transports",
          "rtp"
        ]
      },
      "platform__PlatformAccessSipEndpointNotHosted": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "sip_not_hosted"
            ],
            "description": "This environment has no SIP address.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `sip_not_hosted` | Sip not hosted. |"
          },
          "host": {
            "type": [
              "string",
              "null"
            ],
            "description": "Always null: there is no address.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |",
            "enum": [
              null
            ]
          },
          "transports": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/platform__PlatformAccessSipEndpointTransport"
            },
            "maxItems": 0,
            "description": "Always empty.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `0` items |"
          },
          "rtp": {
            "type": [
              "object",
              "null"
            ],
            "description": "Always null.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Value `null` |\n| Alternative 2 | `null` |",
            "enum": [
              null
            ]
          }
        },
        "required": [
          "status",
          "host",
          "transports",
          "rtp"
        ]
      },
      "platform__PlatformAccessSipEndpoint": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/platform__PlatformAccessSipEndpointHosted"
          },
          {
            "$ref": "#/components/schemas/platform__PlatformAccessSipEndpointNotHosted"
          }
        ],
        "discriminator": {
          "propertyName": "status",
          "mapping": {
            "hosted": "#/components/schemas/platform__PlatformAccessSipEndpointHosted",
            "sip_not_hosted": "#/components/schemas/platform__PlatformAccessSipEndpointNotHosted"
          }
        },
        "description": "`hosted`: the host, SIP transports and RTP range PBXs use. `sip_not_hosted`: the environment has no SIP address; `host` and `rtp` are null and `transports` is empty."
      },
      "platform__PlatformAccessGetSipEndpointResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSipEndpoint"
              }
            ],
            "description": "Structured data carried by this object.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `status`: `hosted`; Required fields: `status`, `host`, `transports`, `rtp` |\n| Alternative 2 | Type: `object`; Field `status`: `sip_not_hosted`; Field `host`: `null`; Field `rtp`: `null`; Required fields: `status`, `host`, `transports`, `rtp` |"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessSipTrunkDirection": {
        "type": "string",
        "enum": [
          "inbound",
          "outbound",
          "both"
        ],
        "description": "`outbound` sends incoming WhatsApp calls to your PBX. `inbound` lets your PBX place WhatsApp calls. `both` does both."
      },
      "platform__PlatformAccessSipTrunkOutbound": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "targetUri": {
            "type": "string",
            "description": "SIP URI that receives incoming WhatsApp calls, for example `sip:pbx.example.com:5060`."
          },
          "transport": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSipTransport"
              },
              {
                "description": "Transport used to reach `targetUri`."
              }
            ],
            "description": "Specifies transport for this platform platform access sip trunk outbound.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `udp` | Udp. |\n| `tcp` | Tcp. |\n| `tls` | Tls. |"
          },
          "authUsername": {
            "type": [
              "string",
              "null"
            ],
            "description": "Username sent when your PBX challenges a call, or null.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "hasPassword": {
            "type": "boolean",
            "description": "Whether a password is stored for `authUsername`. The password is never returned."
          },
          "fromUser": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional override for the From header user on calls sent to your PBX. Null uses the incoming caller identity: E.164 phone number when known, a non-phone LID address otherwise, or `whatsapp` when unknown.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          }
        },
        "required": [
          "targetUri",
          "transport",
          "authUsername",
          "hasPassword",
          "fromUser"
        ],
        "description": "Where incoming WhatsApp calls are sent. Null for `inbound` trunks."
      },
      "platform__PlatformAccessSipTrunkInbound": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "username": {
            "type": "string",
            "description": "Digest username your PBX uses to authenticate calls it sends to Polymorfa."
          },
          "realm": {
            "type": "string",
            "description": "Digest realm for `username`."
          },
          "session": {
            "type": [
              "string",
              "null"
            ],
            "description": "Session that places the WhatsApp calls your PBX sends, or null when none is set. Calls from the PBX are refused until a session is set.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "allowedAddresses": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "IP addresses or CIDR ranges your PBX sends calls from."
          },
          "allowedDestinations": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "E.164 prefixes (for example `+1415`) your PBX may call. Empty allows every destination."
          }
        },
        "required": [
          "username",
          "realm",
          "session",
          "allowedAddresses",
          "allowedDestinations"
        ],
        "description": "How your PBX places WhatsApp calls. Null for `outbound` trunks."
      },
      "platform__PlatformAccessSipCodec": {
        "type": "string",
        "enum": [
          "PCMU",
          "PCMA",
          "opus"
        ]
      },
      "platform__PlatformAccessSipTrunk": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "name": {
            "type": "string",
            "description": "Human-readable name for this resource."
          },
          "enabled": {
            "type": "boolean",
            "description": "Disabled trunks receive no calls and cannot place calls."
          },
          "direction": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSipTrunkDirection"
              }
            ],
            "description": "Specifies direction for this platform platform access sip trunk.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inbound` | Inbound. |\n| `outbound` | Outbound. |\n| `both` | Both. |"
          },
          "outbound": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSipTrunkOutbound"
              }
            ],
            "description": "Specifies outbound for this platform platform access sip trunk.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `transport`: `udp` or `tcp` or `tls`; Required fields: `targetUri`, `transport`, `authUsername`, `hasPassword`, `fromUser` |\n| Alternative 2 | `null` |"
          },
          "inbound": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSipTrunkInbound"
              }
            ],
            "description": "Specifies inbound for this platform platform access sip trunk.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `username`, `realm`, `session`, `allowedAddresses`, `allowedDestinations` |\n| Alternative 2 | `null` |"
          },
          "codecs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/platform__PlatformAccessSipCodec"
            },
            "description": "Audio codecs offered to your PBX, in preference order.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `PCMU` | Pcmu. |\n| `PCMA` | Pcma. |\n| `opus` | Opus. |"
          },
          "maxConcurrentCalls": {
            "type": "integer",
            "description": "Most calls the trunk carries at once."
          },
          "revision": {
            "type": "integer",
            "description": "Changes on every update. Send it as `expectedRevision` to avoid overwriting another change."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was last updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "id",
          "projectId",
          "name",
          "enabled",
          "direction",
          "outbound",
          "inbound",
          "codecs",
          "maxConcurrentCalls",
          "revision",
          "createdAt",
          "updatedAt"
        ]
      },
      "platform__PlatformAccessListSipTrunksResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/platform__PlatformAccessSipTrunk"
            },
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessSipTrunkCredentials": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "description": "WhatsApp username when one is available."
          },
          "password": {
            "type": "string",
            "description": "Shown only in this response. Store it in your PBX now; it cannot be retrieved later."
          },
          "realm": {
            "type": "string",
            "description": "Specifies realm for this platform platform access sip trunk credential."
          }
        },
        "required": [
          "username",
          "password",
          "realm"
        ],
        "description": "Present when the trunk accepts calls from your PBX. The password is shown only once."
      },
      "platform__PlatformAccessCreateSipTrunkResult": {
        "type": "object",
        "properties": {
          "trunk": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSipTrunk"
              }
            ],
            "description": "Specifies trunk for this platform platform access create sip trunk result."
          },
          "inboundCredentials": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSipTrunkCredentials"
              }
            ],
            "description": "Specifies inbound credentials for this platform platform access create sip trunk result."
          }
        },
        "required": [
          "trunk"
        ]
      },
      "platform__PlatformAccessCreateSipTrunkResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessCreateSipTrunkResult"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessSipTrunkOutboundInput": {
        "type": "object",
        "properties": {
          "targetUri": {
            "type": "string",
            "minLength": 5,
            "maxLength": 512,
            "description": "`sip:` or `sips:` URI of your PBX: an optional user, a public host name or IP address, and an optional port. Parameters and passwords are not accepted.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `5` through `512` characters |"
          },
          "transport": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSipTransport"
              },
              {
                "description": "`tls` is required for a `sips:` URI."
              }
            ],
            "description": "Specifies transport for this platform platform access sip trunk outbound input.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `udp` | Udp. |\n| `tcp` | Tcp. |\n| `tls` | Tls. |"
          },
          "authUsername": {
            "type": [
              "string",
              "null"
            ],
            "minLength": 1,
            "maxLength": 128,
            "description": "Username for digest challenges from your PBX. Send null to remove the username and password.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: `1` through `128` characters |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          },
          "authPassword": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "Password for `authUsername`. Write-only; omit it on update to keep the stored password.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |",
            "writeOnly": true
          },
          "fromUser": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^[A-Za-z0-9+._-]{1,64}$",
            "description": "Optional override for the From header user on calls sent to your PBX. Omit or set null to use the incoming caller identity: E.164 phone number when known, a non-phone LID address otherwise, or `whatsapp` when unknown.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Pattern: `^[A-Za-z0-9+._-]{1,64}$` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9+._-]{1,64}$` |"
          }
        },
        "required": [
          "targetUri",
          "transport"
        ],
        "additionalProperties": false,
        "description": "Required unless `direction` is `inbound`."
      },
      "platform__PlatformAccessSipTrunkInboundInput": {
        "type": "object",
        "properties": {
          "session": {
            "type": [
              "string",
              "null"
            ],
            "minLength": 1,
            "maxLength": 64,
            "description": "Session in the same project that places calls from your PBX.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: `1` through `64` characters |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |"
          },
          "allowedAddresses": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64
            },
            "minItems": 1,
            "maxItems": 20,
            "description": "1 to 20 public IP addresses or CIDR ranges your PBX sends calls from. `/0` ranges are rejected.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `20` items |\n| Item string length | `1` through `64` characters |"
          },
          "allowedDestinations": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 100,
            "description": "Up to 100 E.164 prefixes, such as `+1415`, your PBX may call. Omit or send an empty list to allow every destination.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `100` items |"
          }
        },
        "required": [
          "allowedAddresses"
        ],
        "additionalProperties": false,
        "description": "Required unless `direction` is `outbound`."
      },
      "platform__PlatformAccessCreateSipTrunkRequest": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Project that owns the trunk. Required for organization keys; project keys use their own project.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "Display name, 1 to 100 characters.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `100` characters |"
          },
          "enabled": {
            "type": "boolean",
            "description": "Defaults to true."
          },
          "direction": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSipTrunkDirection"
              }
            ],
            "description": "Specifies direction for this platform platform access create sip trunk request.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inbound` | Inbound. |\n| `outbound` | Outbound. |\n| `both` | Both. |"
          },
          "outbound": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSipTrunkOutboundInput"
              }
            ],
            "description": "Specifies outbound for this platform platform access create sip trunk request."
          },
          "inbound": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSipTrunkInboundInput"
              }
            ],
            "description": "Specifies inbound for this platform platform access create sip trunk request."
          },
          "codecs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/platform__PlatformAccessSipCodec"
            },
            "minItems": 1,
            "maxItems": 3,
            "description": "Distinct codecs in preference order. Defaults to `PCMU`, `PCMA`, `opus`.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `PCMU` | Pcmu. |\n| `PCMA` | Pcma. |\n| `opus` | Opus. |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `3` items |"
          },
          "maxConcurrentCalls": {
            "type": "integer",
            "minimum": 1,
            "maximum": 500,
            "description": "1 to 500. Defaults to 30.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `500` (inclusive) |"
          }
        },
        "required": [
          "name",
          "direction"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessGetSipTrunkResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSipTrunk"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessUpdateSipTrunkResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSipTrunk"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessSipTrunkOutboundPatch": {
        "type": "object",
        "properties": {
          "targetUri": {
            "type": "string",
            "minLength": 5,
            "maxLength": 512,
            "description": "`sip:` or `sips:` URI of your PBX: an optional user, a public host name or IP address, and an optional port. Parameters and passwords are not accepted.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `5` through `512` characters |"
          },
          "transport": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSipTransport"
              },
              {
                "description": "`tls` is required for a `sips:` URI."
              }
            ],
            "description": "Specifies transport for this platform platform access sip trunk outbound patch.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `udp` | Udp. |\n| `tcp` | Tcp. |\n| `tls` | Tls. |"
          },
          "authUsername": {
            "type": [
              "string",
              "null"
            ],
            "minLength": 1,
            "maxLength": 128,
            "description": "Username for digest challenges from your PBX. Send null to remove the username and password.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: `1` through `128` characters |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
          },
          "authPassword": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "description": "Password for `authUsername`. Write-only; omit it on update to keep the stored password.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `256` characters |",
            "writeOnly": true
          },
          "fromUser": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^[A-Za-z0-9+._-]{1,64}$",
            "description": "Optional override for the From header user on calls sent to your PBX. Omit or set null to use the incoming caller identity: E.164 phone number when known, a non-phone LID address otherwise, or `whatsapp` when unknown.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Pattern: `^[A-Za-z0-9+._-]{1,64}$` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9+._-]{1,64}$` |"
          }
        },
        "additionalProperties": false,
        "description": "Fields to change. Omitted fields keep their values."
      },
      "platform__PlatformAccessSipTrunkInboundPatch": {
        "type": "object",
        "properties": {
          "session": {
            "type": [
              "string",
              "null"
            ],
            "minLength": 1,
            "maxLength": 64,
            "description": "Session in the same project that places calls from your PBX.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; String length: `1` through `64` characters |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |"
          },
          "allowedAddresses": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64
            },
            "minItems": 1,
            "maxItems": 20,
            "description": "1 to 20 public IP addresses or CIDR ranges your PBX sends calls from. `/0` ranges are rejected.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `20` items |\n| Item string length | `1` through `64` characters |"
          },
          "allowedDestinations": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 100,
            "description": "Up to 100 E.164 prefixes, such as `+1415`, your PBX may call. Omit or send an empty list to allow every destination.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `100` items |"
          }
        },
        "additionalProperties": false,
        "description": "Fields to change. Omitted fields keep their values."
      },
      "platform__PlatformAccessUpdateSipTrunkRequest": {
        "type": "object",
        "properties": {
          "expectedRevision": {
            "type": "integer",
            "minimum": 1,
            "description": "Apply the change only if the trunk still has this `revision`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "Display name, 1 to 100 characters.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `100` characters |"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether this feature is enabled."
          },
          "direction": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSipTrunkDirection"
              },
              {
                "description": "Changing to `outbound` removes the trunk's PBX credentials. Changing an `outbound` trunk to `inbound` or `both` creates a new username; rotate its credentials to get a password."
              }
            ],
            "description": "Specifies direction for this platform platform access update sip trunk request.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inbound` | Inbound. |\n| `outbound` | Outbound. |\n| `both` | Both. |"
          },
          "outbound": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSipTrunkOutboundPatch"
              }
            ],
            "description": "Specifies outbound for this platform platform access update sip trunk request."
          },
          "inbound": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSipTrunkInboundPatch"
              }
            ],
            "description": "Specifies inbound for this platform platform access update sip trunk request."
          },
          "codecs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/platform__PlatformAccessSipCodec"
            },
            "minItems": 1,
            "maxItems": 3,
            "description": "Distinct codecs in preference order. Defaults to `PCMU`, `PCMA`, `opus`.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `PCMU` | Pcmu. |\n| `PCMA` | Pcma. |\n| `opus` | Opus. |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `3` items |"
          },
          "maxConcurrentCalls": {
            "type": "integer",
            "minimum": 1,
            "maximum": 500,
            "description": "1 to 500. Defaults to 30.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `500` (inclusive) |"
          }
        },
        "additionalProperties": false
      },
      "platform__PlatformAccessDeletedSipTrunk": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "deleted": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether deleted.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          }
        },
        "required": [
          "id",
          "deleted"
        ]
      },
      "platform__PlatformAccessDeleteSipTrunkResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessDeletedSipTrunk"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessRotateSipTrunkCredentialsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSipTrunkCredentials"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessCallPolicy": {
        "type": "object",
        "properties": {
          "blockedCountryCodes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Calls to phone numbers that start with one of these codes are refused with `403 call_destination_blocked`. While the list is not empty, calls to a person whose phone number is not known are refused too."
          },
          "optOutCount": {
            "type": "integer",
            "minimum": 0,
            "description": "Entries on the team's do-not-call list.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "revision": {
            "type": "integer",
            "minimum": 0,
            "description": "Increases every time the blocked country codes change; 0 before they are first saved. Send it as `expectedRevision`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "updatedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "When the blocked country codes last changed, or null.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "blockedCountryCodes",
          "optOutCount",
          "revision",
          "updatedAt"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessGetCallPolicyResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessCallPolicy"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessUpdateCallPolicyResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessCallPolicy"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessUpdateCallPolicyRequest": {
        "type": "object",
        "properties": {
          "blockedCountryCodes": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[1-9]\\d{0,3}$",
              "description": "Country calling code, or a longer dialing prefix, as 1 to 4 digits without `+`. For example `44` or `1876`.",
              "example": "44"
            },
            "maxItems": 300,
            "description": "The complete list, replacing the stored one. At most 300 codes; duplicates are removed. Send an empty list to allow every country.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `300` items |\n| Item pattern | `^[1-9]\\d{0,3}$` |"
          },
          "expectedRevision": {
            "type": "integer",
            "minimum": 0,
            "description": "Apply the change only if the policy still has this `revision`. Otherwise it fails with `409 state_conflict`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "blockedCountryCodes"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessCallOptOut": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "phoneNumber": {
            "type": [
              "string",
              "null"
            ],
            "description": "The phone number in E.164 format, or null for a BSUID entry.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "bsuid": {
            "type": [
              "string",
              "null"
            ],
            "description": "The WhatsApp business-scoped user ID, or null for a phone number entry.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "note": {
            "type": [
              "string",
              "null"
            ],
            "description": "Your note, for example why the person asked not to be called.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "source": {
            "type": "string",
            "enum": [
              "api",
              "console",
              "import"
            ],
            "description": "How the entry was added.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `api` | Api. |\n| `console` | Console. |\n| `import` | Import. |"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "id",
          "phoneNumber",
          "bsuid",
          "note",
          "source",
          "createdAt"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessCallOptOutPage": {
        "type": "object",
        "properties": {
          "nextCursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies next cursor for this platform platform access call opt out page.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether more."
          }
        },
        "required": [
          "nextCursor",
          "hasMore"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessListCallOptOutsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/platform__PlatformAccessCallOptOut"
            },
            "description": "Structured data carried by this object."
          },
          "page": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessCallOptOutPage"
              }
            ],
            "description": "Specifies page for this platform platform access list call opt outs response."
          }
        },
        "required": [
          "success",
          "data",
          "page"
        ]
      },
      "platform__PlatformAccessExistingCallOptOutResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessCallOptOut"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessCreateCallOptOutResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessCallOptOut"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessCreateCallOptOutRequest": {
        "type": "object",
        "properties": {
          "phoneNumber": {
            "type": "string",
            "pattern": "^\\+[1-9]\\d{1,14}$",
            "description": "Phone number in E.164 format, for example `+14155550123`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^\\+[1-9]\\d{1,14}$` |"
          },
          "bsuid": {
            "type": "string",
            "pattern": "^[A-Z]{2}\\.[A-Za-z0-9]{1,128}$",
            "description": "WhatsApp business-scoped user ID, for example `US.13491208655302741918`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Z]{2}\\.[A-Za-z0-9]{1,128}$` |"
          },
          "note": {
            "type": "string",
            "minLength": 1,
            "maxLength": 500,
            "description": "Optional note, 1 to 500 Unicode characters.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `500` characters |"
          }
        },
        "additionalProperties": false,
        "oneOf": [
          {
            "required": [
              "phoneNumber"
            ],
            "not": {
              "required": [
                "bsuid"
              ]
            }
          },
          {
            "required": [
              "bsuid"
            ],
            "not": {
              "required": [
                "phoneNumber"
              ]
            }
          }
        ]
      },
      "platform__PlatformAccessImportCallOptOutsResult": {
        "type": "object",
        "properties": {
          "added": {
            "type": "integer",
            "minimum": 0,
            "description": "Entries added.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "existing": {
            "type": "integer",
            "minimum": 0,
            "description": "Entries already on the list, left unchanged.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          },
          "rejected": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "index": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Position in `entries`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
                },
                "reason": {
                  "type": "string",
                  "enum": [
                    "invalid_phone_number",
                    "invalid_bsuid",
                    "missing_identifier",
                    "multiple_identifiers",
                    "invalid_note"
                  ],
                  "description": "Reason for the reported state or outcome.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `invalid_phone_number` | Invalid phone number. |\n| `invalid_bsuid` | Invalid bsuid. |\n| `missing_identifier` | Missing identifier. |\n| `multiple_identifiers` | Multiple identifiers. |\n| `invalid_note` | Invalid note. |"
                }
              },
              "required": [
                "index",
                "reason"
              ],
              "additionalProperties": false
            },
            "description": "Entries that were not added."
          }
        },
        "required": [
          "added",
          "existing",
          "rejected"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessImportCallOptOutsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessImportCallOptOutsResult"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessCallOptOutImportEntry": {
        "type": "object",
        "properties": {
          "phoneNumber": {
            "type": "string",
            "maxLength": 64,
            "description": "Phone number in international format.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `64` characters |"
          },
          "bsuid": {
            "type": "string",
            "maxLength": 256,
            "description": "Business-scoped user identifier (BSUID), scoped to the owning business portfolio.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `256` characters |"
          },
          "note": {
            "type": "string",
            "maxLength": 1000,
            "description": "Specifies note for this platform platform access call opt out import entry.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `1000` characters |"
          }
        },
        "additionalProperties": false
      },
      "platform__PlatformAccessImportCallOptOutsRequest": {
        "type": "object",
        "properties": {
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/platform__PlatformAccessCallOptOutImportEntry"
            },
            "minItems": 1,
            "maxItems": 5000,
            "description": "1 to 5,000 entries, each with exactly one of `phoneNumber` (E.164) or `bsuid`, and an optional `note`. Invalid entries are reported in `rejected` and the others are added.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | `1` through `5000` items |"
          }
        },
        "required": [
          "entries"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessDeletedCallOptOut": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "deleted": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether deleted.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          }
        },
        "required": [
          "id",
          "deleted"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessDeleteCallOptOutResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessDeletedCallOptOut"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessVoiceAudioSource": {
        "type": "string",
        "enum": [
          "upload",
          "tts"
        ]
      },
      "platform__PlatformAccessVoiceAudioStatus": {
        "type": "string",
        "enum": [
          "pending_upload",
          "uploaded",
          "transcoding",
          "ready",
          "failed"
        ],
        "description": "`pending_upload`: waiting for the file. `uploaded` and `transcoding`: being converted. `ready`: usable. `failed`: see `failureReason`. Treat unknown values as `failed`."
      },
      "platform__PlatformAccessVoiceAudioFailureReason": {
        "type": [
          "string",
          "null"
        ],
        "enum": [
          "unsupported_format",
          "too_large",
          "too_long",
          "decode_failed",
          "silent",
          "tts_failed",
          "processing_failed",
          null
        ]
      },
      "platform__PlatformAccessVoiceAudioFormat": {
        "type": [
          "string",
          "null"
        ],
        "enum": [
          "mp3",
          "wav",
          "ogg",
          "m4a",
          null
        ],
        "description": "Container of the original file, known after conversion."
      },
      "platform__PlatformAccessVoiceProvider": {
        "type": "string",
        "enum": [
          "elevenlabs",
          "openai"
        ]
      },
      "platform__PlatformAccessVoiceKeySource": {
        "type": "string",
        "enum": [
          "managed",
          "customer"
        ],
        "description": "`managed`: Polymorfa's provider key. `customer`: your stored key."
      },
      "platform__PlatformAccessVoiceAudioTts": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "provider": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessVoiceProvider"
              }
            ],
            "description": "Specifies provider for this platform platform access voice audio tt.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `elevenlabs` | Elevenlabs. |\n| `openai` | Openai. |"
          },
          "voiceId": {
            "type": "string",
            "description": "ElevenLabs voice ID or OpenAI voice name."
          },
          "model": {
            "type": "string",
            "description": "Specifies model for this platform platform access voice audio tt."
          },
          "text": {
            "type": "string",
            "description": "The text that was spoken."
          },
          "characters": {
            "type": "integer",
            "description": "Characters sent to the provider."
          },
          "keySource": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessVoiceKeySource"
              }
            ],
            "description": "Specifies key source for this platform platform access voice audio tt.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `managed` | Managed. |\n| `customer` | Customer. |"
          },
          "credentialId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Your provider credential, when `keySource` is `customer`.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        },
        "required": [
          "provider",
          "voiceId",
          "model",
          "text",
          "characters",
          "keySource",
          "credentialId"
        ],
        "description": "How the speech was generated. Null for uploads."
      },
      "platform__PlatformAccessVoiceAudioAsset": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "name": {
            "type": "string",
            "description": "Human-readable name for this resource."
          },
          "source": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessVoiceAudioSource"
              }
            ],
            "description": "Specifies source for this platform platform access voice audio asset.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `upload` | Upload. |\n| `tts` | Tts. |"
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessVoiceAudioStatus"
              }
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending_upload` | Pending upload. |\n| `uploaded` | Uploaded. |\n| `transcoding` | Transcoding. |\n| `ready` | Ready. |\n| `failed` | Failed. |"
          },
          "failureReason": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessVoiceAudioFailureReason"
              }
            ],
            "description": "Specifies failure reason for this platform platform access voice audio asset.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `unsupported_format` | Unsupported format. |\n| `too_large` | Too large. |\n| `too_long` | Too long. |\n| `decode_failed` | Decode failed. |\n| `silent` | Silent. |\n| `tts_failed` | Tts failed. |\n| `processing_failed` | Processing failed. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `unsupported_format` or `too_large` or `too_long` or `decode_failed` or `silent` or `tts_failed` or `processing_failed` |\n| Alternative 2 | `null` |"
          },
          "originalFormat": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessVoiceAudioFormat"
              }
            ],
            "description": "Specifies original format for this platform platform access voice audio asset.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `mp3` | Mp3. |\n| `wav` | Wav. |\n| `ogg` | Ogg. |\n| `m4a` | M4a. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `mp3` or `wav` or `ogg` or `m4a` |\n| Alternative 2 | `null` |"
          },
          "originalContentType": {
            "type": [
              "string",
              "null"
            ],
            "description": "Category assigned to original content.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "sizeBytes": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Size of the original file in bytes.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
          },
          "durationMs": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Length of the converted audio, set when `ready`.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
          },
          "contentSha256": {
            "type": [
              "string",
              "null"
            ],
            "description": "SHA-256 (hex) of the converted 16 kHz mono PCM audio, set when `ready`.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "tts": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessVoiceAudioTts"
              }
            ],
            "description": "Specifies tts for this platform platform access voice audio asset.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `provider`: `elevenlabs` or `openai`; Field `keySource`: `managed` or `customer`; Required fields: `provider`, `voiceId`, `model`, `text`, `characters`, `keySource`, `credentialId` |\n| Alternative 2 | `null` |"
          },
          "retentionDays": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Days after creation when the asset is deleted automatically. Null keeps it until you delete it.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
          },
          "expiresAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource expires.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "inUseCount": {
            "type": "integer",
            "description": "Campaigns and flows that use the asset. An asset in use cannot be deleted or expire."
          },
          "revision": {
            "type": "integer",
            "description": "Changes when you rename the asset or change its retention. Send it as `expectedRevision` to avoid overwriting another change."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was last updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "readyAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for ready at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "id",
          "projectId",
          "name",
          "source",
          "status",
          "failureReason",
          "originalFormat",
          "originalContentType",
          "sizeBytes",
          "durationMs",
          "contentSha256",
          "tts",
          "retentionDays",
          "expiresAt",
          "inUseCount",
          "revision",
          "createdAt",
          "updatedAt",
          "readyAt"
        ]
      },
      "platform__PlatformAccessVoiceAudioPage": {
        "type": "object",
        "properties": {
          "nextCursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Specifies next cursor for this platform platform access voice audio page.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether more."
          }
        },
        "required": [
          "nextCursor",
          "hasMore"
        ]
      },
      "platform__PlatformAccessListVoiceAudioResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/platform__PlatformAccessVoiceAudioAsset"
            },
            "description": "Structured data carried by this object."
          },
          "page": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessVoiceAudioPage"
              }
            ],
            "description": "Specifies page for this platform platform access list voice audio response."
          }
        },
        "required": [
          "success",
          "data",
          "page"
        ]
      },
      "platform__PlatformAccessVoiceAudioUpload": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Send the file here with POST. The URL is the permission: send no Authorization header.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
          },
          "method": {
            "type": "string",
            "enum": [
              "POST"
            ],
            "description": "Specifies method for this platform platform access voice audio upload.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `POST` | Post. |"
          },
          "headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Headers to send with the file."
          },
          "maxBytes": {
            "type": "integer",
            "description": "Specifies max bytes for this platform platform access voice audio upload."
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "description": "The upload URL stops working after this time (about 5 minutes).\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "url",
          "method",
          "headers",
          "maxBytes",
          "expiresAt"
        ]
      },
      "platform__PlatformAccessCreateVoiceAudioUploadResult": {
        "type": "object",
        "properties": {
          "asset": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessVoiceAudioAsset"
              }
            ],
            "description": "Specifies asset for this platform platform access create voice audio upload result."
          },
          "upload": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessVoiceAudioUpload"
              }
            ],
            "description": "Specifies upload for this platform platform access create voice audio upload result."
          }
        },
        "required": [
          "asset",
          "upload"
        ]
      },
      "platform__PlatformAccessCreateVoiceAudioUploadResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessCreateVoiceAudioUploadResult"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessVoiceAudioContentType": {
        "type": "string",
        "enum": [
          "audio/mpeg",
          "audio/wav",
          "audio/x-wav",
          "audio/ogg",
          "audio/mp4",
          "audio/x-m4a"
        ],
        "description": "MP3, WAV, OGG (Opus or Vorbis) or M4A (AAC)."
      },
      "platform__PlatformAccessCreateVoiceAudioUploadRequest": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Project that owns the asset. Required for organization keys.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `100` characters |"
          },
          "contentType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessVoiceAudioContentType"
              }
            ],
            "description": "IANA media type that matches the payload.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `audio/mpeg` | Audio/mpeg. |\n| `audio/wav` | Audio/wav. |\n| `audio/x-wav` | Audio/x wav. |\n| `audio/ogg` | Audio/ogg. |\n| `audio/mp4` | Audio/mp4. |\n| `audio/x-m4a` | Audio/x m4a. |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Media type | IANA `type/subtype` value matching the payload, such as `audio/ogg`, `audio/mpeg`, or `audio/aac` |"
          },
          "sizeBytes": {
            "type": "integer",
            "minimum": 1,
            "maximum": 16777216,
            "description": "File size in bytes, at most 16 MB.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `16777216` (inclusive) |"
          },
          "retentionDays": {
            "type": "integer",
            "minimum": 1,
            "maximum": 3650,
            "description": "Delete the asset automatically this many days after creation (1 to 3650). Omit to keep it until you delete it.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `3650` (inclusive) |"
          }
        },
        "required": [
          "name",
          "contentType",
          "sizeBytes"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessSynthesizeVoiceAudioResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessVoiceAudioAsset"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessSynthesizeVoiceAudioRequest": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "format": "uuid",
            "description": "Project that owns the asset. Required for organization keys.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `100` characters |"
          },
          "text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 5000,
            "description": "Text to speak: up to 5,000 characters for ElevenLabs and 4,096 for OpenAI.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `5000` characters |"
          },
          "provider": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessVoiceProvider"
              }
            ],
            "description": "Specifies provider for this platform platform access synthesize voice audio request.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `elevenlabs` | Elevenlabs. |\n| `openai` | Openai. |"
          },
          "voiceId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "ElevenLabs voice ID, or an OpenAI voice name such as `alloy`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |"
          },
          "model": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "ElevenLabs: `eleven_multilingual_v2` (default), `eleven_flash_v2_5`, `eleven_turbo_v2_5`. OpenAI: `gpt-4o-mini-tts` (default), `tts-1`, `tts-1-hd`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `64` characters |"
          },
          "credentialId": {
            "type": "string",
            "format": "uuid",
            "description": "Use your stored key for the provider. Omit to use Polymorfa's key.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "retentionDays": {
            "type": "integer",
            "minimum": 1,
            "maximum": 3650,
            "description": "Specifies retention days for this platform platform access synthesize voice audio request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `3650` (inclusive) |"
          }
        },
        "required": [
          "name",
          "text",
          "provider",
          "voiceId"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessCompleteVoiceAudioUploadResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessVoiceAudioAsset"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessGetVoiceAudioResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessVoiceAudioAsset"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessUpdateVoiceAudioResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessVoiceAudioAsset"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessUpdateVoiceAudioRequest": {
        "type": "object",
        "properties": {
          "expectedRevision": {
            "type": "integer",
            "minimum": 1,
            "description": "Apply the change only if the asset still has this `revision`.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` or greater |"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "Human-readable name for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `100` characters |"
          },
          "retentionDays": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 1,
            "maximum": 3650,
            "description": "Null removes automatic deletion. Retention counts from creation.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `1` through `3650` (inclusive) |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `3650` (inclusive) |"
          }
        },
        "additionalProperties": false
      },
      "platform__PlatformAccessDeletedVoiceAudio": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "deleted": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether deleted.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          }
        },
        "required": [
          "id",
          "deleted"
        ]
      },
      "platform__PlatformAccessDeleteVoiceAudioResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessDeletedVoiceAudio"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessVoiceAudioPreview": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Opus audio in an Ogg container, 16 kHz mono. Valid for about 5 minutes.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
          },
          "contentType": {
            "type": "string",
            "enum": [
              "audio/ogg"
            ],
            "description": "IANA media type that matches the payload.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `audio/ogg` | Audio/ogg. |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Media type | IANA `type/subtype` value matching the payload, such as `audio/ogg`, `audio/mpeg`, or `audio/aac` |"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource expires.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "url",
          "contentType",
          "expiresAt"
        ]
      },
      "platform__PlatformAccessGetVoiceAudioPreviewResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessVoiceAudioPreview"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessVoiceProviderCredentialStatus": {
        "type": "string",
        "enum": [
          "unverified",
          "valid",
          "invalid"
        ],
        "description": "`unverified`: the provider could not be reached when the key was stored or last checked. Treat unknown values as `invalid`."
      },
      "platform__PlatformAccessVoiceProviderCredentialError": {
        "type": [
          "string",
          "null"
        ],
        "enum": [
          "unauthorized",
          "quota_exceeded",
          "forbidden_scope",
          "provider_unavailable",
          null
        ]
      },
      "platform__PlatformAccessVoiceProviderCredential": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "projectId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "The project that may use the key, or null for every project of the team.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "provider": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessVoiceProvider"
              }
            ],
            "description": "Specifies provider for this platform platform access voice provider credential.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `elevenlabs` | Elevenlabs. |\n| `openai` | Openai. |"
          },
          "label": {
            "type": "string",
            "description": "Specifies label for this platform platform access voice provider credential."
          },
          "keyFingerprint": {
            "type": "string",
            "description": "First 8 hex characters of the SHA-256 of the key. The key itself is never returned."
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessVoiceProviderCredentialStatus"
              }
            ],
            "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `unverified` | Unverified. |\n| `valid` | Valid. |\n| `invalid` | Invalid. |"
          },
          "verifiedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Timestamp for verified at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "lastError": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessVoiceProviderCredentialError"
              }
            ],
            "description": "Specifies last error for this platform platform access voice provider credential.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `unauthorized` | Unauthorized. |\n| `quota_exceeded` | Quota exceeded. |\n| `forbidden_scope` | Forbidden scope. |\n| `provider_unavailable` | Provider unavailable. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `unauthorized` or `quota_exceeded` or `forbidden_scope` or `provider_unavailable` |\n| Alternative 2 | `null` |"
          },
          "revision": {
            "type": "integer",
            "description": "Specifies revision for this platform platform access voice provider credential."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was created.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp when this resource was last updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
          }
        },
        "required": [
          "id",
          "projectId",
          "provider",
          "label",
          "keyFingerprint",
          "status",
          "verifiedAt",
          "lastError",
          "revision",
          "createdAt",
          "updatedAt"
        ]
      },
      "platform__PlatformAccessListVoiceProviderCredentialsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/platform__PlatformAccessVoiceProviderCredential"
            },
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessCreateVoiceProviderCredentialResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessVoiceProviderCredential"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessCreateVoiceProviderCredentialRequest": {
        "type": "object",
        "properties": {
          "provider": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessVoiceProvider"
              }
            ],
            "description": "Specifies provider for this platform platform access create voice provider credential request.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `elevenlabs` | Elevenlabs. |\n| `openai` | Openai. |"
          },
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "Specifies label for this platform platform access create voice provider credential request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `100` characters |"
          },
          "apiKey": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "description": "The provider API key. Write-only: it is never returned.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `512` characters |",
            "writeOnly": true
          },
          "projectId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Limit the key to one project. Null or omitted makes it available to every project; project tokens must use their own project.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          }
        },
        "required": [
          "provider",
          "label",
          "apiKey"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessGetVoiceProviderCredentialResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessVoiceProviderCredential"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessVerifyVoiceProviderCredentialResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessVoiceProviderCredential"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessDeletedVoiceProviderCredential": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
          },
          "deleted": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether deleted.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          }
        },
        "required": [
          "id",
          "deleted"
        ]
      },
      "platform__PlatformAccessDeleteVoiceProviderCredentialResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessDeletedVoiceProviderCredential"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessSessionConfigurationView": {
        "type": "object",
        "properties": {
          "requestedHistory": {
            "type": "object",
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "metadata_only",
                  "deliver"
                ],
                "description": "Operating mode selected for this feature.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `metadata_only` | Metadata only. |\n| `deliver` | Deliver. |"
              },
              "requestFull": {
                "type": "boolean",
                "description": "Whether request full."
              }
            },
            "required": [
              "mode",
              "requestFull"
            ],
            "additionalProperties": false,
            "description": "Structured requested history values for this platform platform access session configuration view."
          },
          "historyConsent": {
            "type": "string",
            "enum": [
              "pending",
              "accepted",
              "declined"
            ],
            "description": "Specifies history consent for this platform platform access session configuration view.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending` | Pending. |\n| `accepted` | Accepted. |\n| `declined` | Declined. |"
          },
          "effective": {
            "type": "object",
            "properties": {
              "observation": {
                "type": "object",
                "properties": {
                  "presenceMode": {
                    "type": "string",
                    "enum": [
                      "off",
                      "events",
                      "cache"
                    ],
                    "description": "Behavior selected for presence.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
                  },
                  "typingMode": {
                    "type": "string",
                    "enum": [
                      "off",
                      "events",
                      "cache"
                    ],
                    "description": "Behavior selected for typing.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
                  },
                  "labelMode": {
                    "type": "string",
                    "enum": [
                      "off",
                      "events",
                      "cache",
                      "project"
                    ],
                    "description": "Behavior selected for label.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |\n| `project` | Project. |"
                  },
                  "quickReplyMode": {
                    "type": "string",
                    "enum": [
                      "off",
                      "events",
                      "cache"
                    ],
                    "description": "Behavior selected for quick reply.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
                  }
                },
                "required": [
                  "presenceMode",
                  "typingMode",
                  "labelMode",
                  "quickReplyMode"
                ],
                "additionalProperties": false,
                "description": "Structured observation values for this effective."
              },
              "historySync": {
                "type": "object",
                "properties": {
                  "mode": {
                    "type": "string",
                    "enum": [
                      "metadata_only",
                      "deliver"
                    ],
                    "description": "Operating mode selected for this feature.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `metadata_only` | Metadata only. |\n| `deliver` | Deliver. |"
                  },
                  "requestFull": {
                    "type": "boolean",
                    "description": "Whether request full."
                  }
                },
                "required": [
                  "mode",
                  "requestFull"
                ],
                "additionalProperties": false,
                "description": "History synchronization behavior for newly connected sessions."
              },
              "hms": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "enabled": {
                        "type": "boolean",
                        "enum": [
                          false
                        ],
                        "description": "Whether this feature is enabled.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `false` | False. |"
                      }
                    },
                    "required": [
                      "enabled"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "enabled": {
                        "type": "boolean",
                        "enum": [
                          true
                        ],
                        "description": "Whether this feature is enabled.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
                      },
                      "region": {
                        "type": "string",
                        "pattern": "^[a-z0-9][a-z0-9-]{0,31}$",
                        "description": "Specifies region for this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z0-9][a-z0-9-]{0,31}$` |"
                      },
                      "policy": {
                        "type": "string",
                        "enum": [
                          "short",
                          "standard",
                          "extended",
                          "compliance",
                          "enterprise_archive"
                        ],
                        "description": "Specifies policy for this any of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `short` | Short. |\n| `standard` | Standard. |\n| `extended` | Extended. |\n| `compliance` | Compliance. |\n| `enterprise_archive` | Enterprise archive. |"
                      },
                      "retentionDays": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 2555,
                        "description": "Specifies retention days for this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `2555` (inclusive) |"
                      },
                      "policyVersion": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 128,
                        "description": "Specifies policy version for this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
                      },
                      "legalHold": {
                        "type": "boolean",
                        "description": "Whether legal hold."
                      }
                    },
                    "required": [
                      "enabled",
                      "region",
                      "policy"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "Specifies hms for this effective.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `enabled`: `false`; Required fields: `enabled` |\n| Alternative 2 | Type: `object`; Field `enabled`: `true`; Field `policy`: `short` or `standard` or `extended` or `compliance` or `enterprise_archive`; Required fields: `enabled`, `region`, `policy` |"
              }
            },
            "required": [
              "observation",
              "historySync",
              "hms"
            ],
            "additionalProperties": false,
            "description": "Structured effective values for this platform platform access session configuration view."
          },
          "overrides": {
            "type": "object",
            "properties": {
              "historySync": {
                "type": "object",
                "properties": {
                  "mode": {
                    "type": "string",
                    "enum": [
                      "metadata_only",
                      "deliver"
                    ],
                    "description": "Operating mode selected for this feature.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `metadata_only` | Metadata only. |\n| `deliver` | Deliver. |"
                  },
                  "requestFull": {
                    "type": "boolean",
                    "description": "Whether request full."
                  }
                },
                "additionalProperties": false,
                "description": "History synchronization behavior for newly connected sessions."
              },
              "hms": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "enabled": {
                        "type": "boolean",
                        "enum": [
                          false
                        ],
                        "description": "Whether this feature is enabled.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `false` | False. |"
                      }
                    },
                    "required": [
                      "enabled"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "enabled": {
                        "type": "boolean",
                        "enum": [
                          true
                        ],
                        "description": "Whether this feature is enabled.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
                      },
                      "region": {
                        "type": "string",
                        "pattern": "^[a-z0-9][a-z0-9-]{0,31}$",
                        "description": "Specifies region for this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z0-9][a-z0-9-]{0,31}$` |"
                      },
                      "policy": {
                        "type": "string",
                        "enum": [
                          "short",
                          "standard",
                          "extended",
                          "compliance",
                          "enterprise_archive"
                        ],
                        "description": "Specifies policy for this any of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `short` | Short. |\n| `standard` | Standard. |\n| `extended` | Extended. |\n| `compliance` | Compliance. |\n| `enterprise_archive` | Enterprise archive. |"
                      },
                      "retentionDays": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 2555,
                        "description": "Specifies retention days for this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `2555` (inclusive) |"
                      },
                      "policyVersion": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 128,
                        "description": "Specifies policy version for this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
                      },
                      "legalHold": {
                        "type": "boolean",
                        "description": "Whether legal hold."
                      }
                    },
                    "required": [
                      "enabled",
                      "region",
                      "policy"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "Specifies hms for this override.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `enabled`: `false`; Required fields: `enabled` |\n| Alternative 2 | Type: `object`; Field `enabled`: `true`; Field `policy`: `short` or `standard` or `extended` or `compliance` or `enterprise_archive`; Required fields: `enabled`, `region`, `policy` |"
              },
              "observation": {
                "type": "object",
                "properties": {
                  "presenceMode": {
                    "type": "string",
                    "enum": [
                      "off",
                      "events",
                      "cache"
                    ],
                    "description": "Behavior selected for presence.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
                  },
                  "typingMode": {
                    "type": "string",
                    "enum": [
                      "off",
                      "events",
                      "cache"
                    ],
                    "description": "Behavior selected for typing.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
                  },
                  "labelMode": {
                    "type": "string",
                    "enum": [
                      "off",
                      "events",
                      "cache",
                      "project"
                    ],
                    "description": "Behavior selected for label.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |\n| `project` | Project. |"
                  },
                  "quickReplyMode": {
                    "type": "string",
                    "enum": [
                      "off",
                      "events",
                      "cache"
                    ],
                    "description": "Behavior selected for quick reply.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
                  }
                },
                "additionalProperties": false,
                "description": "Structured observation values for this override."
              }
            },
            "additionalProperties": false,
            "description": "Structured overrides values for this platform platform access session configuration view."
          },
          "sources": {
            "type": "object",
            "properties": {
              "observation.presenceMode": {
                "type": "string",
                "enum": [
                  "platform",
                  "team",
                  "project",
                  "session"
                ],
                "description": "Behavior selected for observation.presence.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `platform` | Platform. |\n| `team` | Team. |\n| `project` | Project. |\n| `session` | Session. |"
              },
              "observation.typingMode": {
                "type": "string",
                "enum": [
                  "platform",
                  "team",
                  "project",
                  "session"
                ],
                "description": "Behavior selected for observation.typing.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `platform` | Platform. |\n| `team` | Team. |\n| `project` | Project. |\n| `session` | Session. |"
              },
              "observation.labelMode": {
                "type": "string",
                "enum": [
                  "platform",
                  "team",
                  "project",
                  "session"
                ],
                "description": "Behavior selected for observation.label.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `platform` | Platform. |\n| `team` | Team. |\n| `project` | Project. |\n| `session` | Session. |"
              },
              "observation.quickReplyMode": {
                "type": "string",
                "enum": [
                  "platform",
                  "team",
                  "project",
                  "session"
                ],
                "description": "Behavior selected for observation.quick reply.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `platform` | Platform. |\n| `team` | Team. |\n| `project` | Project. |\n| `session` | Session. |"
              },
              "historySync.mode": {
                "type": "string",
                "enum": [
                  "platform",
                  "team",
                  "project",
                  "session",
                  "consent"
                ],
                "description": "Behavior selected for history sync.mode.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `platform` | Platform. |\n| `team` | Team. |\n| `project` | Project. |\n| `session` | Session. |\n| `consent` | Consent. |"
              },
              "historySync.requestFull": {
                "type": "string",
                "enum": [
                  "platform",
                  "team",
                  "project",
                  "session",
                  "consent"
                ],
                "description": "Specifies history sync.request full for this source.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `platform` | Platform. |\n| `team` | Team. |\n| `project` | Project. |\n| `session` | Session. |\n| `consent` | Consent. |"
              },
              "hms": {
                "type": "string",
                "enum": [
                  "platform",
                  "team",
                  "project",
                  "session"
                ],
                "description": "Specifies hms for this source.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `platform` | Platform. |\n| `team` | Team. |\n| `project` | Project. |\n| `session` | Session. |"
              }
            },
            "required": [
              "observation.presenceMode",
              "observation.typingMode",
              "observation.labelMode",
              "observation.quickReplyMode",
              "historySync.mode",
              "historySync.requestFull",
              "hms"
            ],
            "additionalProperties": false,
            "description": "Structured sources values for this platform platform access session configuration view."
          },
          "revisions": {
            "type": "object",
            "properties": {
              "team": {
                "type": "integer",
                "minimum": 0,
                "description": "Specifies team for this revision.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              },
              "project": {
                "type": "integer",
                "minimum": 0,
                "description": "Specifies project for this revision.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              },
              "session": {
                "type": "integer",
                "minimum": 0,
                "description": "Identifier of the connected Polymorfa session.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              }
            },
            "required": [
              "team",
              "project",
              "session"
            ],
            "additionalProperties": false,
            "description": "Structured revisions values for this platform platform access session configuration view."
          },
          "application": {
            "type": "object",
            "properties": {
              "desiredGeneration": {
                "type": "integer",
                "minimum": 0,
                "description": "Specifies desired generation for this application.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              },
              "appliedGeneration": {
                "type": "integer",
                "minimum": 0,
                "description": "Specifies applied generation for this application.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
              },
              "status": {
                "type": "string",
                "enum": [
                  "pending",
                  "applied"
                ],
                "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `pending` | Pending. |\n| `applied` | Applied. |"
              }
            },
            "required": [
              "desiredGeneration",
              "appliedGeneration",
              "status"
            ],
            "additionalProperties": false,
            "description": "Structured application values for this platform platform access session configuration view."
          }
        },
        "required": [
          "requestedHistory",
          "effective",
          "overrides",
          "sources",
          "revisions"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessNewChatCapping": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "enabled": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether WhatsApp enabled its new-chat cap for this number. WhatsApp decides this per number; `false` means no cap applies. `null` means WhatsApp's configuration for this number could not be read to a decision, and Polymorfa does not pace to a cap.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `boolean` |\n| Alternative 2 | `null` |"
          },
          "pacing": {
            "type": "boolean",
            "description": "Whether Polymorfa is holding back sends that would start a new chat while the number is capped. True only when `enabled` is true."
          },
          "status": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "none",
              "first_warning",
              "second_warning",
              "capped",
              null
            ],
            "description": "The number's cap status as WhatsApp last reported it: `none`, `first_warning`, `second_warning` or `capped`. `null` until WhatsApp reported one. Reads `none` once the reported cycle has ended.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `none` | None. |\n| `first_warning` | First warning. |\n| `second_warning` | Second warning. |\n| `capped` | Capped. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `none` or `first_warning` or `second_warning` or `capped` |\n| Alternative 2 | `null` |",
            "example": "first_warning"
          },
          "capped": {
            "type": "boolean",
            "description": "True while WhatsApp reports the number capped and Polymorfa paces it (`pacing` is true), until `resetsAt`. New-chat sends are then held back; messages to existing chats still send."
          },
          "limit": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "description": "New chats the number may start in the current cycle, as WhatsApp reported it.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |",
            "example": 50
          },
          "used": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "description": "New chats started in the current cycle, as WhatsApp reported it.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |",
            "example": 26
          },
          "remaining": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "description": "`limit` minus `used`.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer`; Numeric value: `0` or greater |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |",
            "example": 24
          },
          "cycleStartsAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO 8601 start of the current cycle, when WhatsApp reported it.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "resetsAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO 8601 end of the current cycle as WhatsApp reported it. While Polymorfa holds a number that WhatsApp rejected for a new chat without reporting a cycle, the end of that one-hour hold.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "observedAt": {
            "type": "string",
            "description": "ISO 8601 time Polymorfa last observed this state."
          }
        },
        "required": [
          "enabled",
          "pacing",
          "status",
          "capped",
          "limit",
          "used",
          "remaining",
          "cycleStartsAt",
          "resetsAt",
          "observedAt"
        ],
        "description": "WhatsApp's new-chat cap for this linked-device number. Returned by Get session only. `null` when Polymorfa has not observed the number's configuration yet."
      },
      "platform__PlatformAccessSession": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string",
            "description": "Session ID. Use it to address this session in Platform and Messaging requests."
          },
          "name": {
            "type": "string",
            "description": "Display label, or the session identifier when no label is set."
          },
          "externalId": {
            "type": "string",
            "description": "Integrator correlation supplied when creating the QuickLink for this session."
          },
          "tenantId": {
            "type": "string",
            "description": "Identifier of the organization that owns this resource."
          },
          "type": {
            "type": "string",
            "enum": [
              "linked_device",
              "cloud_api"
            ],
            "description": "How the session connects to WhatsApp. 'linked_device' pairs as a WhatsApp linked device; 'cloud_api' uses the Meta Cloud API. Immutable after create.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `linked_device` | Linked device. |\n| `cloud_api` | Cloud api. |"
          },
          "testMode": {
            "type": "boolean",
            "description": "Whether this session was created as a simulated testing number."
          },
          "status": {
            "type": "string",
            "description": "Current status: CONNECTING, CONNECTED, or DISCONNECTED"
          },
          "statusReason": {
            "type": "string",
            "description": "Reason for the current status."
          },
          "configuration": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSessionConfigurationView"
              }
            ],
            "description": "Specifies configuration for this platform platform access session."
          },
          "newChatCapping": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessNewChatCapping"
              }
            ],
            "description": "Specifies new chat capping for this platform platform access session.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `status`: `none` or `first_warning` or `second_warning` or `capped` or `null`; Required fields: `enabled`, `pacing`, `status`, `capped`, `limit`, `used`, `remaining`, `cycleStartsAt`, `resetsAt`, `observedAt` |\n| Alternative 2 | `null` |"
          },
          "createdAt": {
            "type": "string",
            "description": "ISO 8601 timestamp when this resource was created."
          },
          "updatedAt": {
            "type": "string",
            "description": "ISO 8601 timestamp when this resource was last updated."
          }
        },
        "required": [
          "sessionId",
          "name",
          "tenantId",
          "type",
          "testMode",
          "status",
          "createdAt",
          "updatedAt"
        ]
      },
      "platform__PlatformAccessGetSessionResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSession"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessUpdateSessionResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSession"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessUpdateSessionRequest": {
        "type": "object",
        "properties": {
          "configuration": {
            "type": "object",
            "properties": {
              "set": {
                "type": "object",
                "properties": {
                  "historySync": {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "type": "string",
                        "enum": [
                          "metadata_only",
                          "deliver"
                        ],
                        "description": "Operating mode selected for this feature.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `metadata_only` | Metadata only. |\n| `deliver` | Deliver. |"
                      },
                      "requestFull": {
                        "type": "boolean",
                        "description": "Whether request full."
                      }
                    },
                    "additionalProperties": false,
                    "description": "History synchronization behavior for newly connected sessions."
                  },
                  "hms": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "enum": [
                              false
                            ],
                            "description": "Whether this feature is enabled.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `false` | False. |"
                          }
                        },
                        "required": [
                          "enabled"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "enum": [
                              true
                            ],
                            "description": "Whether this feature is enabled.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
                          },
                          "region": {
                            "type": "string",
                            "pattern": "^[a-z0-9][a-z0-9-]{0,31}$",
                            "description": "Specifies region for this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z0-9][a-z0-9-]{0,31}$` |"
                          },
                          "policy": {
                            "type": "string",
                            "enum": [
                              "short",
                              "standard",
                              "extended",
                              "compliance",
                              "enterprise_archive"
                            ],
                            "description": "Specifies policy for this any of.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `short` | Short. |\n| `standard` | Standard. |\n| `extended` | Extended. |\n| `compliance` | Compliance. |\n| `enterprise_archive` | Enterprise archive. |"
                          },
                          "retentionDays": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 2555,
                            "description": "Specifies retention days for this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `1` through `2555` (inclusive) |"
                          },
                          "policyVersion": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 128,
                            "description": "Specifies policy version for this any of.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | `1` through `128` characters |"
                          },
                          "legalHold": {
                            "type": "boolean",
                            "description": "Whether legal hold."
                          }
                        },
                        "required": [
                          "enabled",
                          "region",
                          "policy"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "description": "Specifies hms for this set.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `enabled`: `false`; Required fields: `enabled` |\n| Alternative 2 | Type: `object`; Field `enabled`: `true`; Field `policy`: `short` or `standard` or `extended` or `compliance` or `enterprise_archive`; Required fields: `enabled`, `region`, `policy` |"
                  },
                  "observation": {
                    "type": "object",
                    "properties": {
                      "presenceMode": {
                        "type": "string",
                        "enum": [
                          "off",
                          "events",
                          "cache"
                        ],
                        "description": "Behavior selected for presence.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
                      },
                      "typingMode": {
                        "type": "string",
                        "enum": [
                          "off",
                          "events",
                          "cache"
                        ],
                        "description": "Behavior selected for typing.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
                      },
                      "labelMode": {
                        "type": "string",
                        "enum": [
                          "off",
                          "events",
                          "cache",
                          "project"
                        ],
                        "description": "Behavior selected for label.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |\n| `project` | Project. |"
                      },
                      "quickReplyMode": {
                        "type": "string",
                        "enum": [
                          "off",
                          "events",
                          "cache"
                        ],
                        "description": "Behavior selected for quick reply.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `off` | Off. |\n| `events` | Events. |\n| `cache` | Cache. |"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Structured observation values for this set."
                  }
                },
                "additionalProperties": false,
                "description": "Structured set values for this configuration."
              },
              "reset": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "historySync",
                    "historySync.mode",
                    "historySync.requestFull",
                    "hms",
                    "observation",
                    "observation.presenceMode",
                    "observation.typingMode",
                    "observation.labelMode",
                    "observation.quickReplyMode"
                  ]
                },
                "description": "Reset associated with this configuration.\n\n<!-- polymorfa-input-table -->\n**Allowed item values**\n| Item value | Meaning |\n| --- | --- |\n| `historySync` | History sync. |\n| `historySync.mode` | History sync.mode. |\n| `historySync.requestFull` | History sync.request full. |\n| `hms` | Hms. |\n| `observation` | Observation. |\n| `observation.presenceMode` | Observation.presence mode. |\n| `observation.typingMode` | Observation.typing mode. |\n| `observation.labelMode` | Observation.label mode. |\n| `observation.quickReplyMode` | Observation.quick reply mode. |"
              }
            },
            "additionalProperties": false,
            "description": "Structured configuration values for this platform platform access update session request."
          },
          "revision": {
            "type": "integer",
            "minimum": 0,
            "description": "Specifies revision for this platform platform access update session request.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Numeric value | `0` or greater |"
          }
        },
        "required": [
          "configuration",
          "revision"
        ],
        "additionalProperties": false
      },
      "platform__PlatformAccessOperationAccepted": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message associated with this result."
          },
          "immediate": {
            "type": "boolean",
            "description": "Whether immediate."
          }
        },
        "required": [
          "success",
          "message"
        ]
      },
      "platform__PlatformAccessWhatsAppAccount": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "description": "Polymorfa ID of the connected account.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |",
            "example": "739182640518203"
          },
          "phoneNumber": {
            "type": "string",
            "description": "Phone number in international format."
          },
          "bsuid": {
            "type": "string",
            "description": "Business-scoped user identifier (BSUID), scoped to the owning business portfolio."
          },
          "username": {
            "type": "string",
            "description": "WhatsApp username when one is available."
          },
          "pushName": {
            "type": "string",
            "description": "WhatsApp display name reported by the sender's client."
          },
          "businessName": {
            "type": "string",
            "description": "Business name shown to the customer."
          },
          "phonePlatform": {
            "type": "string",
            "enum": [
              "android",
              "ios",
              "meta_cloud",
              "unknown"
            ],
            "description": "Where the account's primary WhatsApp client runs.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `android` | WhatsApp or WhatsApp Business on an Android phone. |\n| `ios` | WhatsApp or WhatsApp Business on an iPhone. |\n| `meta_cloud` | Meta hosts the number through Cloud API. |\n| `unknown` | The phone has not reported a recognized platform. |"
          },
          "accountType": {
            "type": "string",
            "enum": [
              "whatsapp_app",
              "business_app",
              "meta_cloud",
              "meta_coexistence"
            ],
            "description": "How the account uses WhatsApp.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `whatsapp_app` | WhatsApp app, connected as a linked device. |\n| `business_app` | WhatsApp Business app, connected as a linked device. |\n| `meta_cloud` | Meta Cloud API. |\n| `meta_coexistence` | Meta Cloud API, with the WhatsApp Business app still active on the phone. |"
          },
          "profilePicUrl": {
            "type": "string",
            "description": "URL of the account's profile picture."
          }
        },
        "required": [
          "pushName"
        ]
      },
      "platform__PlatformAccessGetSessionAccountResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessWhatsAppAccount"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessHandoffKeysResponse": {
        "type": "object",
        "properties": {
          "runnerPublicKeyB64": {
            "type": "string",
            "description": "Curve25519 public key the customer must seal their snapshot to. Base64 (URL-safe, no padding)."
          },
          "handoffId": {
            "type": "string",
            "description": "Identifier of the session handoff operation."
          }
        },
        "required": [
          "runnerPublicKeyB64",
          "handoffId"
        ]
      },
      "platform__PlatformAccessHandoffKeysSuccess": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessHandoffKeysResponse"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessHandoffImportSuccess": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSuccessResponse"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessHandoffImportRequest": {
        "type": "object",
        "properties": {
          "handoffId": {
            "type": "string",
            "description": "Round-trip id returned by POST /handoff-keys."
          },
          "sealedEnvelopeB64": {
            "type": "string",
            "description": "Sealed-box envelope (ephemeral_pub(32) || ciphertext) wrapping the customer's SignalStoreSnapshot. Base64."
          },
          "snapshotHashHex": {
            "type": "string",
            "description": "SHA-256 of the unsealed snapshot JSON, hex-encoded. The runner verifies after decrypt before flipping bartenderMode."
          }
        },
        "required": [
          "handoffId",
          "sealedEnvelopeB64",
          "snapshotHashHex"
        ]
      },
      "platform__PlatformAccessUploadAppStateKeysSuccess": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSuccessResponse"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessUploadAppStateKeysRequest": {
        "type": "object",
        "properties": {
          "keys": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "keyId": {
                  "type": "string",
                  "description": "Base64-encoded AppStateSyncKey id (URL-safe-no-pad)."
                },
                "keyB64": {
                  "type": "string",
                  "description": "Base64-encoded 32-byte symmetric key bytes."
                },
                "fingerprintB64": {
                  "type": "string",
                  "description": "Base64-encoded WA fingerprint blob (optional)."
                },
                "timestamp": {
                  "type": "number",
                  "description": "Unix-seconds timestamp WA stamped on the key."
                }
              },
              "required": [
                "keyId",
                "keyB64",
                "timestamp"
              ]
            },
            "description": "Keys associated with this platform platform access upload app state keys request."
          },
          "upgradeTo": {
            "type": "string",
            "enum": [
              "passthrough_plus"
            ],
            "description": "When set, atomically flips sessions.config.bartenderMode → passthrough_plus after the keys persist. Eliminates the window where mode is set but no keys are staged.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `passthrough_plus` | Passthrough plus. |"
          }
        },
        "required": [
          "keys"
        ]
      },
      "platform__PlatformAccessHandoffAckSuccess": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Whether the request succeeded.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `true` | True. |"
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/platform__PlatformAccessSuccessResponse"
              }
            ],
            "description": "Structured data carried by this object."
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "platform__PlatformAccessHandoffAckRequest": {
        "type": "object",
        "properties": {
          "handoffId": {
            "type": "string",
            "description": "Identifier of the session handoff operation."
          },
          "snapshotHashHex": {
            "type": "string",
            "description": "SHA-256 of the snapshot the customer received via mode.handoff_export. API verifies this matches what the runner exported before flipping bartenderMode."
          }
        },
        "required": [
          "handoffId",
          "snapshotHashHex"
        ]
      },
      "platform__PlatformAccessPublicError": {
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "invalid_request_error",
                  "authentication_error",
                  "permission_error",
                  "conflict_error",
                  "rate_limit_error",
                  "api_error",
                  "upstream_error"
                ],
                "description": "Type discriminator for this object.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `invalid_request_error` | Invalid request error. |\n| `authentication_error` | Authentication error. |\n| `permission_error` | Permission error. |\n| `conflict_error` | Conflict error. |\n| `rate_limit_error` | Rate limit error. |\n| `api_error` | Api error. |\n| `upstream_error` | Upstream error. |"
              },
              "code": {
                "type": "string",
                "enum": [
                  "invalid_parameter",
                  "invalid_credential",
                  "entitlement_required",
                  "gate_limit_reached",
                  "method_not_allowed",
                  "permission_denied",
                  "missing_scope",
                  "resource_not_found",
                  "hms_not_enabled",
                  "media_fetch_failed",
                  "resource_gone",
                  "feature_unavailable",
                  "stream_cursor_invalid",
                  "stream_cursor_expired",
                  "stream_connection_limit_reached",
                  "state_conflict",
                  "team_deletion_scheduled",
                  "hybrid_choice_required",
                  "hybrid_group_linked_devices_unavailable",
                  "idempotency_conflict",
                  "idempotency_in_progress",
                  "idempotency_completed",
                  "idempotency_outcome_unknown",
                  "call_claimed",
                  "call_not_ringing",
                  "connection_limit",
                  "unsupported_for_connection",
                  "call_permission_required",
                  "invalid_sip_trunk",
                  "calls_disabled",
                  "call_recipient_opted_out",
                  "call_destination_blocked",
                  "call_permission_request_limited",
                  "call_permission_granted",
                  "call_opt_out_limit",
                  "number_restricted",
                  "sip_trunk_in_use",
                  "sip_trunk_revision_conflict",
                  "sip_trunk_limit",
                  "sip_unavailable",
                  "voice_not_enabled",
                  "provider_credential_invalid",
                  "provider_unavailable",
                  "asset_not_ready",
                  "voice_asset_in_use",
                  "voice_asset_revision_conflict",
                  "voice_unavailable",
                  "rate_limit_exceeded",
                  "internal_error",
                  "operation_not_supported",
                  "upstream_failure",
                  "service_unavailable",
                  "credential_verification_unavailable",
                  "session_not_ready",
                  "command_dispatch_failed",
                  "result_unknown",
                  "parent_bsuid_not_supported",
                  "recipient_not_on_whatsapp",
                  "conversation_window_closed",
                  "template_not_approved",
                  "media_too_large",
                  "whatsapp_rate_limited",
                  "new_chat_limit_reached",
                  "marketing_disabled_on_cloud_api",
                  "whatsapp_account_restricted",
                  "whatsapp_authorization_required",
                  "whatsapp_payment_method_required",
                  "whatsapp_number_not_registered",
                  "bansafe_suspended",
                  "bansafe_org_suspended",
                  "bansafe_cold_blocked",
                  "bansafe_cold_held",
                  "bansafe_throttled",
                  "bansafe_daily_allowance_reached",
                  "bansafe_accounting_unavailable",
                  "bansafe_send_outcome_unknown",
                  "campaigns_not_entitled",
                  "campaign_throughput_capped",
                  "campaign_approval_required",
                  "campaign_approval_stale",
                  "campaign_variables_missing"
                ],
                "description": "Stable machine-readable code for this result.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `invalid_parameter` | Invalid parameter. |\n| `invalid_credential` | Invalid credential. |\n| `entitlement_required` | Entitlement required. |\n| `gate_limit_reached` | Gate limit reached. |\n| `method_not_allowed` | Method not allowed. |\n| `permission_denied` | Permission denied. |\n| `missing_scope` | Missing scope. |\n| `resource_not_found` | Resource not found. |\n| `hms_not_enabled` | Hms not enabled. |\n| `media_fetch_failed` | Media fetch failed. |\n| `resource_gone` | Resource gone. |\n| `feature_unavailable` | Feature unavailable. |\n| `stream_cursor_invalid` | Stream cursor invalid. |\n| `stream_cursor_expired` | Stream cursor expired. |\n| `stream_connection_limit_reached` | Stream connection limit reached. |\n| `state_conflict` | State conflict. |\n| `team_deletion_scheduled` | Team deletion scheduled. |\n| `hybrid_choice_required` | Hybrid choice required. |\n| `hybrid_group_linked_devices_unavailable` | Hybrid group linked devices unavailable. |\n| `idempotency_conflict` | Idempotency conflict. |\n| `idempotency_in_progress` | Idempotency in progress. |\n| `idempotency_completed` | Idempotency completed. |\n| `idempotency_outcome_unknown` | Idempotency outcome unknown. |\n| `call_claimed` | Call claimed. |\n| `call_not_ringing` | Call not ringing. |\n| `connection_limit` | Connection limit. |\n| `unsupported_for_connection` | Unsupported for connection. |\n| `call_permission_required` | Call permission required. |\n| `invalid_sip_trunk` | Invalid sip trunk. |\n| `calls_disabled` | Calls disabled. |\n| `call_recipient_opted_out` | Call recipient opted out. |\n| `call_destination_blocked` | Call destination blocked. |\n| `call_permission_request_limited` | Call permission request limited. |\n| `call_permission_granted` | Call permission granted. |\n| `call_opt_out_limit` | Call opt out limit. |\n| `number_restricted` | Number restricted. |\n| `sip_trunk_in_use` | Sip trunk in use. |\n| `sip_trunk_revision_conflict` | Sip trunk revision conflict. |\n| `sip_trunk_limit` | Sip trunk limit. |\n| `sip_unavailable` | Sip unavailable. |\n| `voice_not_enabled` | Voice not enabled. |\n| `provider_credential_invalid` | Provider credential invalid. |\n| `provider_unavailable` | Provider unavailable. |\n| `asset_not_ready` | Asset not ready. |\n| `voice_asset_in_use` | Voice asset in use. |\n| `voice_asset_revision_conflict` | Voice asset revision conflict. |\n| `voice_unavailable` | Voice unavailable. |\n| `rate_limit_exceeded` | Rate limit exceeded. |\n| `internal_error` | Internal error. |\n| `operation_not_supported` | Operation not supported. |\n| `upstream_failure` | Upstream failure. |\n| `service_unavailable` | Service unavailable. |\n| `credential_verification_unavailable` | Credential verification unavailable. |\n| `session_not_ready` | Session not ready. |\n| `command_dispatch_failed` | Command dispatch failed. |\n| `result_unknown` | Result unknown. |\n| `parent_bsuid_not_supported` | Parent bsuid not supported. |\n| `recipient_not_on_whatsapp` | Recipient not on whatsapp. |\n| `conversation_window_closed` | Conversation window closed. |\n| `template_not_approved` | Template not approved. |\n| `media_too_large` | Media too large. |\n| `whatsapp_rate_limited` | Whatsapp rate limited. |\n| `new_chat_limit_reached` | New chat limit reached. |\n| `marketing_disabled_on_cloud_api` | Marketing disabled on cloud api. |\n| `whatsapp_account_restricted` | Whatsapp account restricted. |\n| `whatsapp_authorization_required` | Whatsapp authorization required. |\n| `whatsapp_payment_method_required` | Whatsapp payment method required. |\n| `whatsapp_number_not_registered` | Whatsapp number not registered. |\n| `bansafe_suspended` | Bansafe suspended. |\n| `bansafe_org_suspended` | Bansafe org suspended. |\n| `bansafe_cold_blocked` | Bansafe cold blocked. |\n| `bansafe_cold_held` | Bansafe cold held. |\n| `bansafe_throttled` | Bansafe throttled. |\n| `bansafe_daily_allowance_reached` | Bansafe daily allowance reached. |\n| `bansafe_accounting_unavailable` | Bansafe accounting unavailable. |\n| `bansafe_send_outcome_unknown` | Bansafe send outcome unknown. |\n| `campaigns_not_entitled` | Campaigns not entitled. |\n| `campaign_throughput_capped` | Campaign throughput capped. |\n| `campaign_approval_required` | Campaign approval required. |\n| `campaign_approval_stale` | Campaign approval stale. |\n| `campaign_variables_missing` | Campaign variables missing. |"
              },
              "message": {
                "type": "string",
                "description": "Human-readable message associated with this result."
              },
              "param": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Specifies param for this error.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
              },
              "request_id": {
                "type": "string",
                "description": "Matches the X-Request-Id response header. Include it when you contact support."
              },
              "request_log_url": {
                "type": "string",
                "format": "uri",
                "description": "Console page that shows this request. Returned only to organization and project credentials whose request was logged.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
              }
            },
            "required": [
              "type",
              "code",
              "message",
              "param",
              "request_id"
            ],
            "description": "Error details returned when the operation fails."
          },
          "data": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              null
            ],
            "description": "Always null for a failed request.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
          },
          "docs": {
            "type": "string",
            "format": "uri",
            "description": "Specifies docs for this platform platform access public error.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uri` |"
          }
        },
        "required": [
          "error",
          "data",
          "docs"
        ]
      },
      "platform__CallRecordEndReason": {
        "type": "object",
        "additionalProperties": false,
        "description": "Why the call ended or was not answered. `code` is `other` for an unrecognized reason.",
        "properties": {
          "code": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_]{0,63}$",
            "example": "user_hangup",
            "description": "Stable machine-readable code for this result.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z][a-z0-9_]{0,63}$` |"
          },
          "label": {
            "type": "string",
            "example": "Hung up",
            "description": "Specifies label for this platform call record end reason."
          }
        },
        "required": [
          "code",
          "label"
        ]
      },
      "platform__CallRecordDetail": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "call": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "callId": {
                "type": "string",
                "description": "Identifier of the WhatsApp call."
              },
              "sessionId": {
                "type": "string",
                "description": "Session name."
              },
              "projectId": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid",
                "description": "Identifier of the Polymorfa project that owns this resource.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `uuid` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `uuid` |"
              },
              "direction": {
                "type": "string",
                "enum": [
                  "inbound",
                  "outbound"
                ],
                "description": "Specifies direction for this call.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `inbound` | Inbound. |\n| `outbound` | Outbound. |"
              },
              "state": {
                "type": "string",
                "enum": [
                  "offered",
                  "accepted",
                  "rejected",
                  "missed",
                  "ended"
                ],
                "description": "Call outcome. `offered` and `accepted` calls may still be live. `rejected` is an incoming call a participant declined. `missed` is an incoming call that rang without an answer. Both keep that state after the call ends. `ended` covers every other finished call: answered calls, outgoing calls, and incoming calls the service could not host. `endReason` gives the cause.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `offered` | Offered. |\n| `accepted` | Accepted. |\n| `rejected` | Rejected. |\n| `missed` | Missed. |\n| `ended` | Ended. |"
              },
              "live": {
                "type": "boolean",
                "description": "Whether live."
              },
              "backend": {
                "type": "string",
                "description": "How the number reaches WhatsApp for this call."
              },
              "hasVideo": {
                "type": "boolean",
                "description": "Whether video."
              },
              "peerRef": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Team-scoped pseudonym of the remote party.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "description": "Timestamp for started at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
              },
              "connectedAt": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date-time",
                "description": "Timestamp for connected at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
              },
              "endedAt": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date-time",
                "description": "Timestamp for ended at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
              },
              "durationSeconds": {
                "type": [
                  "integer",
                  "null"
                ],
                "description": "Duration in seconds.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
              },
              "endReason": {
                "anyOf": [
                  {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/platform__CallRecordEndReason"
                      }
                    ]
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Specifies end reason for this call.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Required fields: `code`, `label` |\n| Alternative 2 | `null` |"
              },
              "answeredBy": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Participant reference that answered: `client:<id>` or `server:<id>`.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
              },
              "exclusive": {
                "type": [
                  "boolean",
                  "null"
                ],
                "description": "Whether the answering participant claimed the call. Null when unknown.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `boolean` |\n| Alternative 2 | `null` |"
              }
            },
            "required": [
              "callId",
              "sessionId",
              "projectId",
              "direction",
              "state",
              "live",
              "backend",
              "hasVideo",
              "peerRef",
              "startedAt",
              "connectedAt",
              "endedAt",
              "durationSeconds",
              "endReason",
              "answeredBy",
              "exclusive"
            ],
            "description": "Structured call values for this platform call record detail."
          },
          "participants": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "type": "string",
                  "pattern": "^[1-9][0-9]{0,18}$",
                  "description": "Public participant id, as call.participant_* webhooks report it.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[1-9][0-9]{0,18}$` |"
                },
                "state": {
                  "type": "string",
                  "enum": [
                    "invited",
                    "ringing",
                    "connected",
                    "left"
                  ],
                  "description": "Current lifecycle state of this resource.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `invited` | Invited. |\n| `ringing` | Ringing. |\n| `connected` | Connected. |\n| `left` | Left. |"
                },
                "firstSeenAt": {
                  "type": "string",
                  "format": "date-time",
                  "description": "Timestamp for first seen at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
                },
                "updatedAt": {
                  "type": "string",
                  "format": "date-time",
                  "description": "ISO 8601 timestamp when this resource was last updated.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
                },
                "leftReason": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Specifies left reason for this participant.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
                }
              },
              "required": [
                "id",
                "state",
                "firstSeenAt",
                "updatedAt",
                "leftReason"
              ]
            },
            "description": "Participants associated with the group or conversation."
          },
          "connections": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "type": "string",
                  "pattern": "^[A-Za-z0-9_-]{8,64}$",
                  "description": "Identifier for this resource.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9_-]{8,64}$` |"
                },
                "participant": {
                  "type": "string",
                  "pattern": "^(client|server):[A-Za-z0-9._:@-]{1,128}$",
                  "description": "Specifies participant for this connection.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^(client\\|server):[A-Za-z0-9._:@-]{1,128}$` |"
                },
                "transport": {
                  "type": "string",
                  "enum": [
                    "webrtc",
                    "socket",
                    "sip",
                    "unknown"
                  ],
                  "description": "Specifies transport for this connection.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `webrtc` | Webrtc. |\n| `socket` | Socket. |\n| `sip` | Sip. |\n| `unknown` | Unknown. |"
                },
                "joinedAt": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date-time",
                  "description": "Timestamp for joined at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
                },
                "leftAt": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date-time",
                  "description": "Timestamp for left at.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Format: `date-time` |\n| Alternative 2 | `null` |\n\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
                },
                "reason": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "enum": [
                    "left",
                    "replaced",
                    "claimed",
                    "call_ended",
                    "sip_busy",
                    "sip_declined",
                    "sip_no_answer",
                    "sip_unavailable",
                    "sip_auth_failed",
                    null
                  ],
                  "description": "Reason for the reported state or outcome.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `left` | Left. |\n| `replaced` | Replaced. |\n| `claimed` | Claimed. |\n| `call_ended` | Call ended. |\n| `sip_busy` | Sip busy. |\n| `sip_declined` | Sip declined. |\n| `sip_no_answer` | Sip no answer. |\n| `sip_unavailable` | Sip unavailable. |\n| `sip_auth_failed` | Sip auth failed. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `left` or `replaced` or `claimed` or `call_ended` or `sip_busy` or `sip_declined` or `sip_no_answer` or `sip_unavailable` or `sip_auth_failed` |\n| Alternative 2 | `null` |"
                }
              },
              "required": [
                "id",
                "participant",
                "transport",
                "joinedAt",
                "leftAt",
                "reason"
              ]
            },
            "description": "Connections associated with this platform call record detail."
          },
          "telemetry": {
            "type": "object",
            "additionalProperties": false,
            "description": "Media measurements reported by the call service. Measurements that were not taken are null.",
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "reported",
                  "unknown"
                ],
                "description": "Current status of this resource or operation.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `reported` | Reported. |\n| `unknown` | Unknown. |"
              },
              "source": {
                "type": "string",
                "enum": [
                  "media_server"
                ],
                "description": "Specifies source for this telemetry.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `media_server` | Media server. |"
              },
              "setupMs": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Specifies setup ms for this telemetry.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
              },
              "ringMs": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Specifies ring ms for this telemetry.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
              },
              "codec": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Specifies codec for this telemetry.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
              },
              "jitterMs": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Specifies jitter ms for this telemetry.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
              },
              "packetsLost": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Specifies packets lost for this telemetry.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
              },
              "rttMs": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Specifies rtt ms for this telemetry.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
              },
              "receivedKbps": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Specifies received kbps for this telemetry.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
              },
              "sentKbps": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Specifies sent kbps for this telemetry.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `number` |\n| Alternative 2 | `null` |"
              }
            },
            "required": [
              "status",
              "source",
              "setupMs",
              "ringMs",
              "codec",
              "jitterMs",
              "packetsLost",
              "rttMs",
              "receivedKbps",
              "sentKbps"
            ]
          },
          "appReports": {
            "type": "object",
            "additionalProperties": false,
            "description": "Diagnostics your app sent with `POST /messaging/voip/calls/{id}/reports`, by connection. Figures the app did not report are null.",
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "reported",
                  "none"
                ],
                "description": "`none` when the app sent no report for the call.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `reported` | Reported. |\n| `none` | None. |"
              },
              "connections": {
                "type": "array",
                "maxItems": 200,
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "connectionId": {
                      "type": "string",
                      "pattern": "^[A-Za-z0-9_-]{8,64}$",
                      "description": "Identifier for the connection.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[A-Za-z0-9_-]{8,64}$` |"
                    },
                    "participant": {
                      "type": "string",
                      "pattern": "^(client|server):[A-Za-z0-9._:@-]{1,128}$",
                      "description": "Specifies participant for this connection.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^(client\\|server):[A-Za-z0-9._:@-]{1,128}$` |"
                    },
                    "client": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "additionalProperties": false,
                      "description": "The SDK named by the connection's most recent report. Null when that report named none.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `platform`: `browser` or `node` or `other`; Required fields: `sdk`, `version`, `platform` |\n| Alternative 2 | `null` |",
                      "properties": {
                        "sdk": {
                          "type": "string",
                          "pattern": "^[a-z0-9@/._-]{1,32}$",
                          "description": "Specifies sdk for this client.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Pattern | `^[a-z0-9@/._-]{1,32}$` |"
                        },
                        "version": {
                          "type": "string",
                          "maxLength": 32,
                          "description": "Specifies version for this client.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| String length | At most `32` characters |"
                        },
                        "platform": {
                          "type": "string",
                          "enum": [
                            "browser",
                            "node",
                            "other"
                          ],
                          "description": "Specifies platform for this client.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `browser` | Browser. |\n| `node` | Node. |\n| `other` | Other. |"
                        }
                      },
                      "required": [
                        "sdk",
                        "version",
                        "platform"
                      ]
                    },
                    "quality": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "additionalProperties": false,
                      "description": "The connection's latest quality report. Null when it sent none.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `object`; Field `candidateType`: `host` or `srflx` or `prflx` or `relay` or `null`; Required fields: `reportedAt`, `rttMs`, `jitterMs`, `packetsLost`, `packetsReceived`, `audioCodec`, `videoCodec`, `candidateType`, `reconnects` |\n| Alternative 2 | `null` |",
                      "properties": {
                        "reportedAt": {
                          "type": "string",
                          "format": "date-time",
                          "description": "Timestamp for reported at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
                        },
                        "rttMs": {
                          "type": [
                            "integer",
                            "null"
                          ],
                          "description": "Specifies rtt ms for this quality.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
                        },
                        "jitterMs": {
                          "type": [
                            "integer",
                            "null"
                          ],
                          "description": "Specifies jitter ms for this quality.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
                        },
                        "packetsLost": {
                          "type": [
                            "integer",
                            "null"
                          ],
                          "description": "Specifies packets lost for this quality.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
                        },
                        "packetsReceived": {
                          "type": [
                            "integer",
                            "null"
                          ],
                          "description": "Specifies packets received for this quality.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
                        },
                        "audioCodec": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Specifies audio codec for this quality.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
                        },
                        "videoCodec": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Specifies video codec for this quality.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string` |\n| Alternative 2 | `null` |"
                        },
                        "candidateType": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "enum": [
                            "host",
                            "srflx",
                            "prflx",
                            "relay",
                            null
                          ],
                          "description": "Category assigned to candidate.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `host` | Host. |\n| `srflx` | Srflx. |\n| `prflx` | Prflx. |\n| `relay` | Relay. |\n| `null` | Null. |\n\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `string`; Value `host` or `srflx` or `prflx` or `relay` |\n| Alternative 2 | `null` |"
                        },
                        "reconnects": {
                          "type": [
                            "integer",
                            "null"
                          ],
                          "description": "Specifies reconnects for this quality.\n\n<!-- polymorfa-input-table -->\n**Accepted alternatives**\n| Alternative | Accepted input |\n| --- | --- |\n| Alternative 1 | Type: `integer` |\n| Alternative 2 | `null` |"
                        }
                      },
                      "required": [
                        "reportedAt",
                        "rttMs",
                        "jitterMs",
                        "packetsLost",
                        "packetsReceived",
                        "audioCodec",
                        "videoCodec",
                        "candidateType",
                        "reconnects"
                      ]
                    },
                    "errors": {
                      "type": "array",
                      "maxItems": 50,
                      "description": "Reported errors, newest first.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `50` items |",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "code": {
                            "type": "string",
                            "enum": [
                              "media_permission_denied",
                              "device_not_found",
                              "device_in_use",
                              "ice_failed",
                              "negotiation_failed",
                              "media_timeout",
                              "reconnect_exhausted",
                              "token_refresh_failed",
                              "unsupported_browser",
                              "other"
                            ],
                            "description": "Stable machine-readable code for this result.\n\n<!-- polymorfa-input-table -->\n**Allowed values**\n| Value | Meaning |\n| --- | --- |\n| `media_permission_denied` | Media permission denied. |\n| `device_not_found` | Device not found. |\n| `device_in_use` | Device in use. |\n| `ice_failed` | Ice failed. |\n| `negotiation_failed` | Negotiation failed. |\n| `media_timeout` | Media timeout. |\n| `reconnect_exhausted` | Reconnect exhausted. |\n| `token_refresh_failed` | Token refresh failed. |\n| `unsupported_browser` | Unsupported browser. |\n| `other` | Other. |"
                          },
                          "reportedAt": {
                            "type": "string",
                            "format": "date-time",
                            "description": "Timestamp for reported at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
                          }
                        },
                        "required": [
                          "code",
                          "reportedAt"
                        ]
                      }
                    }
                  },
                  "required": [
                    "connectionId",
                    "participant",
                    "client",
                    "quality",
                    "errors"
                  ]
                },
                "description": "Connections associated with this app report.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Array size | At most `200` items |"
              },
              "truncated": {
                "type": "boolean",
                "description": "True when the call reached its limit of 200 stored reports or older errors are not shown."
              }
            },
            "required": [
              "status",
              "connections",
              "truncated"
            ]
          },
          "history": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "events": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "eventId": {
                      "type": "string",
                      "description": "Event id, as the `id` of the matching webhook delivery."
                    },
                    "type": {
                      "type": "string",
                      "description": "Type discriminator for this object."
                    },
                    "occurredAt": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Timestamp for occurred at.\n\n<!-- polymorfa-input-table -->\n**Value constraints**\n| Constraint | Accepted input |\n| --- | --- |\n| Format | `date-time` |"
                    }
                  },
                  "required": [
                    "eventId",
                    "type",
                    "occurredAt"
                  ]
                },
                "description": "Events returned or subscribed to by this operation."
              },
              "truncated": {
                "type": "boolean",
                "description": "True when the call exceeded the recorded history limit."
              }
            },
            "required": [
              "events",
              "truncated"
            ],
            "description": "Structured history values for this platform call record detail."
          },
          "correlation": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "callId": {
                "type": "string",
                "description": "Identifier of the WhatsApp call."
              },
              "sessionId": {
                "type": "string",
                "description": "Identifier of the connected Polymorfa session."
              }
            },
            "required": [
              "callId",
              "sessionId"
            ],
            "description": "Structured correlation values for this platform call record detail."
          }
        },
        "required": [
          "call",
          "participants",
          "connections",
          "telemetry",
          "appReports",
          "history",
          "correlation"
        ]
      }
    },
    "headers": {
      "messaging__X-RateLimit-Limit": {
        "description": "Team request quota per rolling minute, when the per-team request limiter applies.",
        "schema": {
          "type": "integer",
          "minimum": 1
        }
      },
      "messaging__X-RateLimit-Remaining": {
        "description": "Requests left in the per-team quota; zero when this limiter rejects the request.",
        "schema": {
          "type": "integer",
          "minimum": 0
        }
      },
      "messaging__X-RateLimit-Reset": {
        "description": "Unix timestamp in seconds when the oldest counted request leaves the rolling window, when the per-team request limiter applies. Follow Retry-After on a rejected request.",
        "schema": {
          "type": "integer",
          "minimum": 0
        }
      },
      "graph__X-RateLimit-Limit": {
        "description": "Team request quota per rolling minute, when the per-team request limiter applies.",
        "schema": {
          "type": "integer",
          "minimum": 1
        }
      },
      "graph__X-RateLimit-Remaining": {
        "description": "Requests left in the per-team quota; zero when this limiter rejects the request.",
        "schema": {
          "type": "integer",
          "minimum": 0
        }
      },
      "graph__X-RateLimit-Reset": {
        "description": "Unix timestamp in seconds when the oldest counted request leaves the rolling window, when the per-team request limiter applies. Follow Retry-After on a rejected request.",
        "schema": {
          "type": "integer",
          "minimum": 0
        }
      },
      "platform__X-RateLimit-Limit": {
        "description": "Team request quota per rolling minute, when the per-team request limiter applies.",
        "schema": {
          "type": "integer",
          "minimum": 1
        }
      },
      "platform__X-RateLimit-Remaining": {
        "description": "Requests left in the per-team quota; zero when this limiter rejects the request.",
        "schema": {
          "type": "integer",
          "minimum": 0
        }
      },
      "platform__X-RateLimit-Reset": {
        "description": "Unix timestamp in seconds when the oldest counted request leaves the rolling window, when the per-team request limiter applies. Follow Retry-After on a rejected request.",
        "schema": {
          "type": "integer",
          "minimum": 0
        }
      }
    },
    "securitySchemes": {
      "messaging__BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "Polymorfa organization key (pmfa_ prefix), project token (pmfa_pt_ prefix) where supported, or short-lived client token (pmfa_ct_ prefix). Organization and project keys may be personal or service-account owned and enforce selected action scopes. Organization keys cover the team and its projects; project tokens stay inside one project. Client tokens stay inside their live project and session and enforce their client rules."
      },
      "graph__BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "Polymorfa organization key (pmfa_ prefix) or project token (pmfa_pt_ prefix). Client tokens are not accepted by Graph operations."
      },
      "platform__ApiKeyAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "Send your team API key or project token as `Authorization: Bearer <token>`. The credential must have the required permissions. Project tokens can access only their own project."
      }
    },
    "parameters": {},
    "responses": {
      "platform__Unauthorized": {
        "description": "Missing/invalid credential for this audience.",
        "headers": {
          "X-Request-Id": {
            "schema": {
              "type": "string"
            },
            "description": "Stable request correlation identifier."
          },
          "X-Trace-Id": {
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{32}$"
            },
            "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
          },
          "Polymorfa-Version": {
            "schema": {
              "type": "string"
            },
            "description": "API version applied to this response."
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/platform__ErrorEnvelope"
            }
          }
        }
      },
      "platform__Forbidden": {
        "description": "Authenticated but lacks the required scope/role/audience.",
        "headers": {
          "X-Request-Id": {
            "schema": {
              "type": "string"
            },
            "description": "Stable request correlation identifier."
          },
          "X-Trace-Id": {
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{32}$"
            },
            "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
          },
          "Polymorfa-Version": {
            "schema": {
              "type": "string"
            },
            "description": "API version applied to this response."
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/platform__ErrorEnvelope"
            }
          }
        }
      },
      "platform__PayloadTooLarge": {
        "description": "Request body exceeds the endpoint limit.",
        "headers": {
          "X-Request-Id": {
            "schema": {
              "type": "string"
            },
            "description": "Stable request correlation identifier."
          },
          "X-Trace-Id": {
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{32}$"
            },
            "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
          },
          "Polymorfa-Version": {
            "schema": {
              "type": "string"
            },
            "description": "API version applied to this response."
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/platform__ErrorEnvelope"
            }
          }
        }
      },
      "platform__BadRequest": {
        "description": "A path, query, or request-body value did not pass validation.",
        "headers": {
          "X-Request-Id": {
            "schema": {
              "type": "string"
            },
            "description": "Stable request correlation identifier."
          },
          "X-Trace-Id": {
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{32}$"
            },
            "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
          },
          "Polymorfa-Version": {
            "schema": {
              "type": "string"
            },
            "description": "API version applied to this response."
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/platform__ErrorEnvelope"
            }
          }
        }
      },
      "platform__PaymentRequired": {
        "description": "The number's plan does not include this capability.",
        "headers": {
          "X-Request-Id": {
            "schema": {
              "type": "string"
            },
            "description": "Stable request correlation identifier."
          },
          "X-Trace-Id": {
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{32}$"
            },
            "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
          },
          "Polymorfa-Version": {
            "schema": {
              "type": "string"
            },
            "description": "API version applied to this response."
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/platform__ErrorEnvelope"
            }
          }
        }
      },
      "platform__AddonRequired": {
        "description": "The request uses a benefit of an add-on that your team does not have active. Error code `addon_required`.",
        "headers": {
          "X-Request-Id": {
            "schema": {
              "type": "string"
            },
            "description": "Stable request correlation identifier."
          },
          "X-Trace-Id": {
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{32}$"
            },
            "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
          },
          "Polymorfa-Version": {
            "schema": {
              "type": "string"
            },
            "description": "API version applied to this response."
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/platform__ErrorEnvelope"
            }
          }
        }
      },
      "platform__BillingCreditRequired": {
        "description": "The paid number could not reserve sufficient available credit. Add credit to your team before starting it.",
        "headers": {
          "X-Request-Id": {
            "schema": {
              "type": "string"
            },
            "description": "Stable request correlation identifier."
          },
          "X-Trace-Id": {
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{32}$"
            },
            "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
          },
          "Polymorfa-Version": {
            "schema": {
              "type": "string"
            },
            "description": "API version applied to this response."
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/platform__ErrorEnvelope"
            }
          }
        }
      },
      "platform__CallStatsTooSlow": {
        "description": "`service_unavailable`: the statistics took too long to compute. Narrow the range or filters and retry.",
        "headers": {
          "X-Request-Id": {
            "schema": {
              "type": "string"
            },
            "description": "Stable request correlation identifier."
          },
          "X-Trace-Id": {
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{32}$"
            },
            "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
          },
          "Polymorfa-Version": {
            "schema": {
              "type": "string"
            },
            "description": "API version applied to this response."
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/platform__ErrorEnvelope"
            }
          }
        }
      },
      "platform__RateLimited": {
        "description": "A limit was reached. Wait for `Retry-After` before retrying.",
        "headers": {
          "X-Request-Id": {
            "schema": {
              "type": "string"
            },
            "description": "Stable request correlation identifier."
          },
          "X-Trace-Id": {
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{32}$"
            },
            "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
          },
          "Polymorfa-Version": {
            "schema": {
              "type": "string"
            },
            "description": "API version applied to this response."
          },
          "Retry-After": {
            "schema": {
              "type": "integer",
              "minimum": 1
            },
            "description": "Seconds to wait before retrying."
          },
          "Polymorfa-RateLimit-Reason": {
            "schema": {
              "type": "string"
            },
            "description": "The limit that was reached. See the rate-limit reasons in the error reference."
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/platform__ErrorEnvelope"
            }
          }
        }
      },
      "platform__UpstreamFailure": {
        "description": "`upstream_failure`: the messaging provider could not complete the send.",
        "headers": {
          "X-Request-Id": {
            "schema": {
              "type": "string"
            },
            "description": "Stable request correlation identifier."
          },
          "X-Trace-Id": {
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{32}$"
            },
            "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
          },
          "Polymorfa-Version": {
            "schema": {
              "type": "string"
            },
            "description": "API version applied to this response."
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/platform__ErrorEnvelope"
            }
          }
        }
      },
      "platform__ResultUnknown": {
        "description": "`result_unknown`: the outcome was not received before the deadline. The message may still arrive; check before repeating the request.",
        "headers": {
          "X-Request-Id": {
            "schema": {
              "type": "string"
            },
            "description": "Stable request correlation identifier."
          },
          "X-Trace-Id": {
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{32}$"
            },
            "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
          },
          "Polymorfa-Version": {
            "schema": {
              "type": "string"
            },
            "description": "API version applied to this response."
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/platform__ErrorEnvelope"
            }
          }
        }
      },
      "platform__CampaignVariablesMissing": {
        "description": "`campaign_variables_missing`: a recipient (or the test's sample values) has no value and no fallback for a variable in the campaign content. Nothing was sent.",
        "headers": {
          "X-Request-Id": {
            "schema": {
              "type": "string"
            },
            "description": "Stable request correlation identifier."
          },
          "X-Trace-Id": {
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{32}$"
            },
            "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
          },
          "Polymorfa-Version": {
            "schema": {
              "type": "string"
            },
            "description": "API version applied to this response."
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/platform__ErrorEnvelope"
            }
          }
        }
      },
      "platform__SendPathUnavailable": {
        "description": "The send path is unavailable or the sending number is not ready (`session_not_ready`, `command_dispatch_failed`, `service_unavailable`, or `bansafe_accounting_unavailable`). No message was sent.",
        "headers": {
          "X-Request-Id": {
            "schema": {
              "type": "string"
            },
            "description": "Stable request correlation identifier."
          },
          "X-Trace-Id": {
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{32}$"
            },
            "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
          },
          "Polymorfa-Version": {
            "schema": {
              "type": "string"
            },
            "description": "API version applied to this response."
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/platform__ErrorEnvelope"
            }
          }
        }
      },
      "platform__CampaignEligibilityUnavailable": {
        "description": "`service_unavailable`: the selected numbers' plans could not be checked. Nothing was launched or saved; retry the request.",
        "headers": {
          "X-Request-Id": {
            "schema": {
              "type": "string"
            },
            "description": "Stable request correlation identifier."
          },
          "X-Trace-Id": {
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{32}$"
            },
            "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
          },
          "Polymorfa-Version": {
            "schema": {
              "type": "string"
            },
            "description": "API version applied to this response."
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/platform__ErrorEnvelope"
            }
          }
        }
      },
      "platform__PropagationPending": {
        "description": "The change was stored, but a connected number has not confirmed it. Retry the request; the stored setting is already correct and is retried automatically.",
        "headers": {
          "X-Request-Id": {
            "schema": {
              "type": "string"
            },
            "description": "Stable request correlation identifier."
          },
          "X-Trace-Id": {
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{32}$"
            },
            "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
          },
          "Polymorfa-Version": {
            "schema": {
              "type": "string"
            },
            "description": "API version applied to this response."
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/platform__ErrorEnvelope"
            }
          }
        }
      },
      "platform__NotFound": {
        "description": "The requested resource was not found inside the authenticated team or project scope.",
        "headers": {
          "X-Request-Id": {
            "schema": {
              "type": "string"
            },
            "description": "Stable request correlation identifier."
          },
          "X-Trace-Id": {
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{32}$"
            },
            "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
          },
          "Polymorfa-Version": {
            "schema": {
              "type": "string"
            },
            "description": "API version applied to this response."
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/platform__ErrorEnvelope"
            }
          }
        }
      },
      "platform__Conflict": {
        "description": "The request conflicts with the resource's current state.",
        "headers": {
          "X-Request-Id": {
            "schema": {
              "type": "string"
            },
            "description": "Stable request correlation identifier."
          },
          "X-Trace-Id": {
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{32}$"
            },
            "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
          },
          "Polymorfa-Version": {
            "schema": {
              "type": "string"
            },
            "description": "API version applied to this response."
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/platform__ErrorEnvelope"
            }
          }
        }
      },
      "platform__CampaignLaunchForbidden": {
        "description": "`permission_denied`: a project token attempted to launch a segment campaign; use a team API key or signed-in dashboard session. `feature_unavailable`: either audience beta is unavailable for a segment campaign, or the campaign has tracked links and its link tracking beta is unavailable. `bansafe_org_suspended` while the team is suspended.",
        "headers": {
          "X-Request-Id": {
            "schema": {
              "type": "string"
            },
            "description": "Stable request correlation identifier."
          },
          "X-Trace-Id": {
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{32}$"
            },
            "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
          },
          "Polymorfa-Version": {
            "schema": {
              "type": "string"
            },
            "description": "API version applied to this response."
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/platform__ErrorEnvelope"
            }
          }
        }
      },
      "platform__CampaignLaunchConflict": {
        "description": "`campaign_approval_required`: the launch is held for a team owner or admin and nothing was sent; the message names the approval request. `state_conflict`: the campaign is not a draft, is already launched and waiting for its start, its sending numbers or audience changed during launch, or segment evaluation exceeded its time limit (simplify the rules and retry). A launched campaign whose segment was deleted cannot be launched again.",
        "headers": {
          "X-Request-Id": {
            "schema": {
              "type": "string"
            },
            "description": "Stable request correlation identifier."
          },
          "X-Trace-Id": {
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{32}$"
            },
            "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
          },
          "Polymorfa-Version": {
            "schema": {
              "type": "string"
            },
            "description": "API version applied to this response."
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/platform__ErrorEnvelope"
            }
          }
        }
      },
      "platform__Unprocessable": {
        "description": "The retained payload is unavailable or no longer replayable.",
        "headers": {
          "X-Request-Id": {
            "schema": {
              "type": "string"
            },
            "description": "Stable request correlation identifier."
          },
          "X-Trace-Id": {
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{32}$"
            },
            "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
          },
          "Polymorfa-Version": {
            "schema": {
              "type": "string"
            },
            "description": "API version applied to this response."
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/platform__ErrorEnvelope"
            }
          }
        }
      },
      "platform__OperationCancellationConflict": {
        "description": "The operation cannot accept cancellation, or the idempotency key was reused for a different request.",
        "headers": {
          "X-Request-Id": {
            "schema": {
              "type": "string"
            },
            "description": "Stable request correlation identifier."
          },
          "X-Trace-Id": {
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{32}$"
            },
            "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
          },
          "Polymorfa-Version": {
            "schema": {
              "type": "string"
            },
            "description": "API version applied to this response."
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/platform__OperationCancellationConflictEnvelope"
            }
          }
        }
      },
      "platform__InternalError": {
        "description": "The session-control publisher or testing-number persistence path is temporarily unavailable.",
        "headers": {
          "X-Request-Id": {
            "schema": {
              "type": "string"
            },
            "description": "Stable request correlation identifier."
          },
          "X-Trace-Id": {
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{32}$"
            },
            "description": "W3C trace ID of this request. Your `traceparent` trace ID when you sent a valid one."
          },
          "Polymorfa-Version": {
            "schema": {
              "type": "string"
            },
            "description": "API version applied to this response."
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/platform__ErrorEnvelope"
            }
          }
        }
      }
    }
  }
}
